Usuń obramowanie zaznaczenia EditText

83

Jak mogę usunąć obramowanie z pojawia się przy ustawianiu widoku EditText?

Potrzebuję tego, bo ten widok ma mało miejsca na ekranie, ale bez ramki wystarczy. Podczas pracy na emulatorze pojawia się pomarańczowa ramka, a na urządzeniu niebieska.

Marcos Vasconcelos
źródło
Nie wiem, czy to możliwe ... Zawsze możesz zrobić własne przyciski, trochę mniejsze.
gnclmorais
Możliwy duplikat edycji edittext - jak ukryć underbar
Rohit Vipin Mathews

Odpowiedzi:

188

Czy próbowałeś ustawić EditTextprzezroczysty kolor tła?

<EditText  
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:hint="@string/hello" 
android:background="#00000000"
/>
el-milligano
źródło
21
"@android:color/transparent"jest nieco bardziej zrozumiała.
Alexander Malakhov
7
"@null"może być również opcja
Mangesh
3
ta odpowiedź nie jest poprawna, ponieważ nie tylko usuwa obramowanie fokusa, ale także nieostre tło EditText.
JensJensen
@Michael tak, ponieważ szesnastkowe 0 i 00000 to to samo. jego nadal zero.
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"                 

 />
Android
źródło
12

To jest możliwe. Jednak nie polecałbym tego, ponieważ użytkownicy są przyzwyczajeni do pewnych metafor i nie powinieneś zmieniać ogólnego UX.

Możesz zastosować różne style do swoich widoków. W twoim przypadku brzmi to tak, jakbyś chciał elementu EditText View, który wygląda jak element TextView. W takim przypadku należałoby określić inne tła dla EditText w zależności od stanu elementu View.

W wybranym pliku layout.xml przypisujesz tło do tekstu edycji:

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

Następnie utwórz plik custom.xml w folderze do rysowania i dodaj następujące elementy:

<?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>

To są możliwe stany elementu widoku EditText. Zwykle możesz uzyskać dostęp do rysunków platformy Android bezpośrednio za pomocą @android:drawable/textfield_default, ale w tym przypadku rysunki Textfield są prywatne, więc musisz je skopiować do własnego folderu do rysowania. Oryginalne zasoby można znaleźć w folderze instalacyjnym zestawu SDK pod adresem ANDROID_HOME\platforms\android-(API LEVEL)\data\res\drawable-(*dpi)\.

Gdy skończysz, otrzymasz EditText, który wygląda jak TextView, ale całkowicie bez tych granic. Te pomarańczowe obramowania, które widziałeś w emulatorze, są domyślnymi rysunkami Androida. Niebieskie są specyficzne dla producenta (prawdopodobnie Samsung).

Mam nadzieję, że to pomogło i nie zmyliło tak bardzo.

MarioB.
źródło
Niedługo to przetestuję. I to dla Galaxy Tab.
Marcos Vasconcelos,
cóż… to może zadziałać. Ale nie chcę rysować wszystkich tych środowisk. Muszę po prostu usunąć obramowanie domyślnego, to nie jest możliwe?
Marcos Vasconcelos,
Przykład, który zamieściłem, pochodzi z oryginalnej implementacji. Ramka EditText nie jest rysowana indywidualnie. Jest to pełny obraz tła, który jest ustawiany w zależności od aktualnego stanu elementu View. Platforma Android zawsze ustawia pełny obraz tła. Obrazy dziewięciu poprawek można zobaczyć w instalacji SDK w ANDROID_HOME \ platform \ android- (POZIOM API) \ data \ res \ drawable - (* dpi) \.
MarioB.
6

To najszybsze rozwiązanie:

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

 />
Federico Ponzi
źródło
0

Możesz zachować przezroczysty kolor tła, aby usunąć ramkę EditText na fokusie.

Metoda 1

<EditText 
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#00000000"
/>
Rajneesh Shukla
źródło