Есть ли способ создать EditText
закругленные углы?
280
Есть ли способ создать EditText
закругленные углы?
Существует более простой способ, чем написанный CommonsWare. Просто создайте нарисованный ресурс, который определяет способ EditText
рисования:
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/rounded_edittext.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#FFFFFF"/>
<corners
android:bottomRightRadius="15dp"
android:bottomLeftRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
</shape>
Затем просто назовите этот drawable в вашем макете:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="5dip"
android:background="@drawable/rounded_edittext" />
</LinearLayout>
Вы получите что-то вроде:
Основываясь на комментариях Марка, я хочу добавить способ, которым вы можете создавать различные состояния для вашего EditText
:
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/rounded_edittext_states.xml -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:state_enabled="true"
android:drawable="@drawable/rounded_focused" />
<item
android:state_focused="true"
android:state_enabled="true"
android:drawable="@drawable/rounded_focused" />
<item
android:state_enabled="true"
android:drawable="@drawable/rounded_edittext" />
</selector>
Это состояния:
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/rounded_edittext_focused.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#FFFFFF"/>
<stroke android:width="2dp" android:color="#FF0000" />
<corners
android:bottomRightRadius="15dp"
android:bottomLeftRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
</shape>
И ... теперь EditText
должно выглядеть так:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:background="@drawable/rounded_edittext_states"
android:padding="5dip"/>
</LinearLayout>
EditText
имеет разные фоны для фокусировки, отключен, нажат и выбран, кроме по умолчанию. В частности, фокусировка может быть важна в будущем, если мы получим некоторые устройства Android без сенсорных экранов, такие как Google TV.android:radius
вместо определения 4 линийВот то же решение (с дополнительным бонусным кодом) только в одном XML-файле:
Затем вы просто устанавливаете атрибут background в файл edittext_ounded_corners.xml:
источник
topRightRadius
иtopLeftRadius
все четыре угла заканчивались закруглением. Пожалуйста помоги. :(Попробуй это,
1. Создайте файл rounded_edittext.xml в своем Drawable
2. Примените фон для вашего EditText в XML-файле.
3.Вы получите вывод, как это
источник
Спасибо за ответ Норфельдта. Я сделал небольшое изменение в его градиенте для лучшего эффекта внутренней тени.
Отлично смотрится в легкой фоновой компоновке ..
источник
По моему мнению, у него уже есть закругленные углы.
Если вы хотите, чтобы они были более округленными, вам необходимо:
EditText
фон (находится в вашем SDK)StateListDrawable
ресурс, который объединяет этиEditText
фоны в одинDrawable
, и измените его так, чтобы он указывал на ваши более разнообразные файлы PNG из 9 патчей.StateListDrawable
в качестве фона для вашегоEditText
виджетаисточник
Если вы хотите, чтобы только угол имел кривую, а не весь конец, используйте код ниже.
Это только изогнет четыре угла
EditText
.источник
Просто чтобы добавить к другим ответам, я обнаружил, что самое простое решение для достижения закругленных углов было установить следующее в качестве фона для вашего Edittext.
источник
В библиотеке компонентов материалов вы можете использовать
MaterialShapeDrawable
для рисования пользовательских фигур .С помощью
EditText
вы можете сделать:Затем создайте
MaterialShapeDrawable
:Требуется версия 1.1.0 библиотеки.
источник