Вот пример элемента управления iPhone
EditText
:
Как я могу создать такой же элемент управления в Android?
Вот пример элемента управления iPhone
EditText
:
Как я могу создать такой же элемент управления в Android?
По сути, я вижу три способа сделать то, что вы хотите.
Во-первых, как говорит Акки, сделайте 9-патч, который точно дублирует поле с градиентной заливкой, которое вы хотите использовать (не указанная другая платформа). Это позволяет вашему приложению выглядеть максимально одинаково на обеих платформах.
Вот 9-патч, сделанный из вашего снимка экрана выше. (Это res/drawable-*dpi/rounded_text_field.9.png
)
Во-вторых, получить тот же эффект, используя масштабируемые собственные возможности рисования. Это не будет выглядеть точно так же, но, возможно, даст более плавные результаты.
Вот некоторый код для создания изображения с закругленными углами и градиентной заливкой. (Это res/drawable/gradientbg.xml
)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
>
<corners android:radius="8dp"/>
<stroke android:width="2dp"
android:color="#444"/>
<gradient
android:startColor="#888"
android:centerColor="#fff"
android:endColor="#fff"
android:type="linear"
android:angle="270"
/>
</shape>
На самом деле, я солгал. На моем исходном снимке экрана углы слишком большие, поэтому я уменьшил радиус угла с 16dp до 8dp. Вот как это выглядит сейчас. Намного улучшилось, тебе не кажется? И это намного проще, чем настраивать растровое изображение в 4 различных плотностях.
Третий подход — позволить платформе быть такой, какой она есть, и выглядеть наилучшим образом в рамках своей парадигмы. Преимущество этого заключается в том, что в разных версиях ОС ваше приложение будет органично сочетаться с остальной частью системы, даже если системная тема изменится.
Вот EditText
по умолчанию, выполняющий точно такой же код в Gingerbread. Это выглядело бы довольно неуместно на устройстве с тематикой Holo (например, на планшете с процессором Jellybean, который я использовал для создания первого снимка экрана), и наоборот.
Для справки, вот макет, который содержит все три EditText.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="32dp"
android:orientation="vertical"
>
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
android:layout_marginTop="24dp"
android:padding="12dp"
android:gravity="center"
android:background="@drawable/rounded_text_field"
android:inputType="text"
android:textColor="@android:color/black"
android:text="9-patch background." >
<requestFocus />
</EditText>
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
android:layout_marginTop="24dp"
android:padding="12dp"
android:gravity="center"
android:background="@drawable/gradientbg"
android:inputType="text"
android:textColor="@android:color/black"
android:text="Gradient background." />
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
android:layout_marginTop="24dp"
android:padding="12dp"
android:gravity="center"
android:inputType="text"
android:text="Default background." />
</LinearLayout>
Все, что вам нужно сделать, это создать небольшое изображение из девяти патчей и установить его в качестве фона вашего EditText
. вот пример изображения
И вот как работают девять изображений патчей
я не уверен, что вы можете это сделать, но вы можете искать фоны для iPhone. Ищите «трафареты для iPhone» PS: у меня тоже есть сумасшедший клиент, который хочет дизайн, похожий на iPhone, в своих приложениях для Android, я думаю, что делать это совершенно абсурдно.