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.


Nie wiem, czy to możliwe ... Zawsze możesz zrobić własne przyciski, trochę mniejsze.
gnclmorais

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"
/>

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"                 

 />

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.


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"                 

 />

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"
/>
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.