Удалить границу фокуса EditText

83

Как я могу удалить границу со значком при фокусировке в режиме EditText?

Мне это нужно, потому что в этом представлении мало места на экране, но без рамки этого достаточно. При работе в эмуляторе появляется оранжевая рамка, на устройстве - синяя.

Маркос Васконселос
источник
Я не знаю, возможно ли это ... Вы всегда можете сделать свои собственные кнопки немного меньше.
gnclmorais
Возможный дубликат edittext - как скрыть подчеркивание
Рохит Випин Мэтьюз

Ответы:

188

Вы пробовали установить EditTextпрозрачный цвет фона?

<EditText  
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:hint="@string/hello" 
android:background="#00000000"
/>
Эль-Миллигано
источник
21
"@android:color/transparent"немного более самоочевидно.
Александр Малахов
7
"@null"тоже может быть вариант
Мангеш
3
этот ответ неверен, так как он не только удаляет рамку фокуса, но и не сфокусированный фон EditText.
JensJensen
@Michael: да, потому что шестнадцатеричный 0 и 00000 одинаковы. его все еще ноль.
Брилл Паппин
39
<EditText
            android:id="@+id/edittext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"  
            android:background="@android:drawable/editbox_background_normal"                 

 />
Android
источник
12

Возможно. Однако я бы не рекомендовал это, потому что пользователи привыкли к определенным метафорам, и вам не следует менять общий UX.

Вы можете применять к своим представлениям разные стили. В вашем случае похоже, что вам нужен элемент EditText View, который выглядит как элемент TextView. В этом случае вам нужно будет указать другие фоны для EditText в зависимости от состояния элемента View.

В желаемом файле layout.xml вы назначаете фон своему EditText:

<EditText  
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:hint="@string/hello" android:background="@drawable/custom"
/>

Затем вы создаете custom.xml в своей папке с возможностью рисования и добавляете следующее:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_window_focused="false" android:state_enabled="true"
    android:drawable="@drawable/textfield_default" />
  <item android:state_window_focused="false" android:state_enabled="false"
    android:drawable="@drawable/textfield_disabled" />
  <item android:state_pressed="true" android:drawable="@drawable/textfield_default" />
  <item android:state_enabled="true" android:state_focused="true" android:drawable="@drawable/textfield_default" />
  <item android:state_enabled="true" android:drawable="@drawable/textfield_default" />
  <item android:state_focused="true" android:drawable="@drawable/textfield_disabled" />
  <item android:drawable="@drawable/textfield_disabled" />
</selector>

Это возможные состояния вашего элемента представления EditText. Обычно вы можете получить доступ к чертежам платформы Android напрямую, используя @android:drawable/textfield_default, но в этом случае чертежи текстового поля являются частными, поэтому вам нужно скопировать их в свою собственную папку для рисования. Исходные ресурсы можно найти в папке установки SDK по адресу ANDROID_HOME\platforms\android-(API LEVEL)\data\res\drawable-(*dpi)\.

Как только вы закончите, вы получите EditText, который выглядит как TextView, но полностью без этих границ. Те оранжевые границы, которые вы видели в эмуляторе, являются чертежами Android по умолчанию. Синие - это конкретные производители (возможно, Samsung).

Надеюсь, что это помогло и не сильно смущало.

MarioB.
источник
Собираюсь скоро протестировать. И это для Galaxy Tab.
Маркос Васконселос,
ну .. это может сработать. Но я не хочу рисовать все эти фоны. Мне нужно просто удалить границу стандартной, это невозможно?
Маркос Васконселос,
Пример, который я опубликовал, является производным от исходной реализации. Граница EditText не рисуется отдельно. Это полное фоновое изображение, которое устанавливается в зависимости от текущего состояния элемента View. Внутри платформы Android каждый раз устанавливается полное фоновое изображение. Вы можете увидеть изображения с девятью патчами в вашей установке SDK по адресу ANDROID_HOME \ platform \ android- (API LEVEL) \ data \ res \ drawable - (* dpi) \.
MarioB.
6

Это самое быстрое решение:

<EditText
            android:id="@+id/edittext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"  
            android:background="#00000000"                 

 />
Федерико Понци
источник
0

Вы можете оставить цвет фона прозрачным, чтобы убрать границу EditText в фокусе.

Способ 1

<EditText 
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#00000000"
/>
Раджниш Шукла
источник