Jak mogę ukryć pasek podrzędny EditText (wiersz zachęty z małymi serifami na końcach)?
Może być lepszy sposób na robienie tego, co chcę: mam układ z EditText. Zwykle wyświetla się dobrze, gdzie użytkownik może go dotknąć i rozpocząć wprowadzanie lub edycję tekstu.
Czasami jednak chciałbym użyć tego samego układu (upraszcza inną logikę), aby wyświetlać te same dane w trybie tylko do odczytu. Chcę, aby prezentacja była podobna - powinna mieć tę samą wysokość i tę samą czcionkę, ale nie powinna mieć podbicia.
Jako miarę stop-gap zamierzam to zaimplementować, usuwając EditText i podstawiając TextView. Myślę, że da to pożądane rezultaty, ale wydaje się, że rondo jest drogim sposobem na zrobienie czegoś, co powinno być łatwe do zrobienia poprzez zmianę atrybutów.
źródło
Odpowiedzi:
Możesz ustawić
EditText
niestandardową przezroczystą szufladę lub po prostu użyćlub
lub programowo
źródło
android:background="@android:color/transparent"
android:background="@android:color/transparent"
powoduje ten sam problem utraty marginesów ... Czy jest gdzieś przykład kogoś, kto tworzy taki niestandardowy wyciąg?Ustaw tło na zero.
źródło
android:background="@android:color/transparent
że@null
jest przerażające.@null
przerażający?Można ustawić
EditText
„sbackgroundTint
wartość do określonego koloru. Jeśli ustawisz kolor przezroczysty, podbródek powinien zniknąć.android:backgroundTint="@color/Transparent"
<color name="Transparent">#00000000</color>
Ale możesz użyć tego w wersji
Api v21(Lollipop)
wyższej lub wyższejźródło
Ustaw tło edytowanego tekstu jako
android:background="#00000000"
To będzie działać.
źródło
Możesz to zrobić programowo, używając
setBackgroundResource
:źródło
Stworzyłem Drawable Shape i ustawiłem to jako tło:
Uwaga: faktycznie użyłem
@dimen
i@color
wartości dla firelds, ale uprościłem tutaj plik kształtu dla większej przejrzystości.źródło
Za pomocą dowolnej właściwości:
LUB
pracował dla mnie, aby ukryć podkreślenie EditText.
Należy jednak pamiętać, że powoduje to problem z odstępami w TextInputLayout, który otaczam
EditText
źródło
Oto sposób, aby go ukryć bez rujnowania domyślnego wypełnienia:
stosowanie:
Aktualizacja:
Jeśli okaże się, że zawsze podajesz null, możesz to skodyfikować w metodzie (a wtedy równie dobrze możesz przeciążić sam EditText)
źródło
Musisz także ustawić minWidth, w przeciwnym razie kursor zniknie, jeśli tekst będzie pusty.
źródło
W moim przypadku użyłem niestandardowego tła do edycji tekstu, więc ustawienie tła na @ null lub ustawienie odcienia na przezroczyste nie było dla mnie rozwiązaniem, więc zagrałem w małą sztuczkę, która działała dla mnie bardzo ładnie, właśnie ustawiłem
i robi to całkiem dobrze. nie jest to optymalne rozwiązanie, ale działa
źródło
Mam coś takiego, co jest bardzo przydatne:
gdzie generalEditText to mój EditText, a kolor biały to:
Nie spowoduje to usunięcia dopełnienia, a tekst EditText pozostanie niezmieniony. Tylko linia na dole zostanie usunięta. Czasami bardziej przydatne jest zrobienie tego w ten sposób.
Jeśli użyjesz
android:background="@null"
tyle sugerowanych, tracisz dopełnienie, a EditText staje się mniejszy. Tak przynajmniej było w moim przypadku.Mała uwaga: jeśli ustawisz tło na zero i wypróbujesz kod java, który podałem powyżej, twoja aplikacja ulegnie awarii natychmiast po uruchomieniu. (ponieważ pobiera tło, ale jest zerowe). Może to być oczywiste, ale myślę, że wskazanie tego jest ważne.
źródło
Odkryłem najbardziej ciekawą rzecz! Jeśli ustawisz
null
używanie powiązania danych:android:background="@{null}"
Następnie nie tylko tło jest usuwane, ale w widoku nadal znajduje się wypełnienie, które zostało obliczone na tle domyślnym. Więc z jakiegoś powodu ustawienie odroczonego zerowania nie usuwa dopełnienia z poprzedniego bg ..? Dopełnienie widoku to lewy / górny / prawy 4dp, dolny 13dp (z poziomu emulatora 21).
Może nie mieć tego samego wyniku końcowego na wszystkich poziomach API, więc uważaj! Ktoś mi powie, jeśli to przetestujesz i okaże się wiarygodny. (Zauważ też, że dolne wypełnienie wystaje z powodu podkreślenia, które było w oryginale. Więc prawdopodobnie będziesz chciał go zmienić w pliku XML lub zresetować w kodzie po załadowaniu do równej góry ...
źródło
jeśli Twój tekst edycji ma już tło, możesz użyć następującego.
źródło
Jeśli chcesz, aby wpłynęło to na wszystkie instancje EditText i dowolną dziedziczącą po nim klasę, powinieneś ustawić w swoim motywie wartość atrybutu editTextBackground.
Przykładem rysunku, którego używam, jest:
Jest to nieznacznie zmodyfikowana wersja domyślnej implementacji projektu materiału.
Po zastosowaniu spowoduje, że cały tekst EditText usunie podkreślenie w aplikacji i nie będziesz musiał ręcznie stosować stylu do każdego z nich.
źródło
Po prostu użyj tego
źródło
Możesz także zdefiniować STYL dla swojego editText, abyś mógł przegrupować wszystkie wspólne właściwości. Jest bardzo potężny, jeśli musisz edytować wiele tekstów, które wymagają zachowania
Umieść kod w res / wartości / styles.xml
Następnie wystarczy wywołać go w editText
źródło
Programowo użyj:
editText.setBackground(null)
Od
xml
użycia:android:background="@null"
źródło
Lub
źródło
android: inputType = "textVisiblePassword | textMultiLine" android: background = "@ android: color / transparent"
... to nie jest optymalne rozwiązanie, ale działa.
źródło
Ustaw tło na zero
źródło
W moim przypadku
editText.setBackgroundResource(R.color.transparent);
jest najlepszy.Nie usuwa domyślnego wypełnienia tuż pod paskiem.
R.color.transparent = #00000000
źródło
jeśli używasz tła, musisz użyć tego tagu
źródło
Aby zachować zarówno marginesy, jak i kolor tła:
background.xml
Edytować tekst:
źródło