Видаліть межу фокусування з EditText


83

Як я можу зняти межу з, що з'являється під час фокусування подання EditText?

Мені це потрібно, оскільки на цьому вікні мало місця на екрані, але без меж цього досить. При запуску на Емуляторі з'являється помаранчева облямівка, на Пристрої - синя.


Не знаю, чи можливо це ... Ви завжди можете зробити власні кнопки трохи меншими.
gnclmorais

Відповіді:


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 так, тому що hex 0 і 00000 однакові. це все ще нуль.
Brill Pappin

39
<EditText
            android:id="@+id/edittext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"  
            android:background="@android:drawable/editbox_background_normal"                 

 />

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 View. Зазвичай ви можете отримати доступ до малюнків платформи Android безпосередньо за допомогою @android:drawable/textfield_default, але в цьому випадку малюнки текстового поля є приватними, тому вам доведеться скопіювати їх у власну папку, яку можна малювати. Оригінальні ресурси можна знайти у папці встановлення SDK за адресою ANDROID_HOME\platforms\android-(API LEVEL)\data\res\drawable-(*dpi)\.

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

Сподівання, що допомогло і не сильно заплутало.


Я збираюся перевірити це незабаром. І це для Galaxy Tab.
Marcos Vasconcelos

ну .. це може спрацювати. Але я не хочу малювати всі ці фони. Мені потрібно просто видалити межу за замовчуванням, це неможливо?
Marcos Vasconcelos

Приклад, який я розмістив, є похідним від початкової реалізації. Межа 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"
/>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.