Entfernen Sie den Fokusrand von EditText

83

Wie kann ich den Rand entfernen, mit dem angezeigt wird, wenn eine EditText-Ansicht fokussiert wird?

Ich brauche es, weil diese Ansicht wenig Platz auf dem Bildschirm hat, aber ohne Rand ist es genug. Beim Ausführen auf dem Emulator wird ein orangefarbener Rand angezeigt, auf dem Gerät ein blauer.

Marcos Vasconcelos
quelle
Ich weiß nicht, ob es möglich ist ... Sie können Ihre benutzerdefinierten Schaltflächen immer etwas kleiner gestalten.
Gnclmorais
Mögliches Duplikat von edittext - wie man Unterbar versteckt
Rohit Vipin Mathews

Antworten:

187

Haben Sie versucht, den Hintergrund von EditTextauf eine transparente Farbe einzustellen?

<EditText  
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:hint="@string/hello" 
android:background="#00000000"
/>
el-milligano
quelle
20
"@android:color/transparent"ist etwas selbsterklärender.
Alexander Malakhov
7
"@null"kann auch eine Option sein
Mangesh
3
Diese Antwort ist nicht korrekt, da nicht nur der Fokusrand entfernt wird, sondern auch der nicht fokussierte EditText-Hintergrund.
JensJensen
@ Michael ja, weil hex 0 und 00000 gleich sind. es ist immer noch Null.
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
quelle
12

Es ist möglich. Ich würde es jedoch nicht empfehlen, da Benutzer an bestimmte Metaphern gewöhnt sind und Sie die allgemeine Benutzeroberfläche nicht ändern sollten.

Sie können Ihren Ansichten verschiedene Stile zuweisen. In Ihrem Fall möchten Sie ein EditText View-Element, das wie ein TextView-Element aussieht. In diesem Fall müssten Sie abhängig vom Status des View-Elements andere Hintergründe für den EditText angeben.

In Ihrer gewünschten layout.xml weisen Sie Ihrem EditText einen Hintergrund zu:

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

Anschließend erstellen Sie die Datei custom.xml in Ihrem Zeichenordner und fügen Folgendes hinzu:

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

Dies sind die möglichen Zustände Ihres EditText View-Elements. Normalerweise können Sie direkt mit der Android-Plattform auf Drawables zugreifen. @android:drawable/textfield_defaultIn diesem Fall sind die Textfeld-Drawables jedoch privat, sodass Sie sie in Ihren eigenen Drawable-Ordner kopieren müssen. Die ursprünglichen Ressourcen finden Sie in Ihrem SDK-Installationsordner unter ANDROID_HOME\platforms\android-(API LEVEL)\data\res\drawable-(*dpi)\.

Sobald Sie fertig sind, erhalten Sie einen EditText, der wie eine Textansicht aussieht, jedoch vollständig ohne diese Rahmen ist. Diese orangefarbenen Ränder, die Sie im Emulator gesehen haben, sind die Standard-Android-Zeichen. Die blauen sind herstellerspezifisch (möglicherweise Samsung).

Hoffe das hat geholfen und nicht so viel verwirrt.

MarioB.
quelle
Ich werde es bald testen. Und es ist für Galaxy Tab.
Marcos Vasconcelos
gut .. das kann funktionieren. Aber ich möchte nicht all diese Hintergründe zeichnen. Ich muss nur den Rand des Standard-Randes entfernen. Ist das nicht möglich?
Marcos Vasconcelos
Das Beispiel, das ich gepostet habe, ist von der ursprünglichen Implementierung abgeleitet. Der EditText-Rahmen wird nicht einzeln gezeichnet. Es ist ein vollständiges Hintergrundbild, das abhängig vom aktuellen Status des View-Elements festgelegt wird. Intern legt die Android-Plattform jedes Mal ein vollständiges Hintergrundbild fest. Sie können die Images mit neun Patches in Ihrer SDK-Installation unter ANDROID_HOME \ platform \ android- (API LEVEL) \ data \ res \ drawable - (* dpi) \ sehen.
MarioB.
6

Dies ist die schnellste Lösung:

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

 />
Federico Ponzi
quelle
0

Sie können die Hintergrundfarbe transparent halten, um den EditText-Rand im Fokus zu entfernen.

Methode 1

<EditText 
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#00000000"
/>
Rajneesh Shukla
quelle