Is there a way to make EditText behaviors like TextView in Android (XML is prefered)?
I have tried the following:
android:editable="false"
android:focusable="false"
android:focusableInTouchMode="false"
android:cursorVisible="false"
android:longClickable="false"
This works but I still can touch the EditText to get focus (the orange boarder), though the focus lost as soon as I remove my finger.
I'm not sure what focusableInTouchMode does, but it doesn't remove the focus when I keep touching.
And the reason why I don't use a white background TextView instead is that the TextView's background is ugly. EditText's background has round corners and shadow effect.
Thanks in advance.
EditText is used for user input. TextView is used to display text and is not editable by the user. TextView can be updated programatically at any time.
In your xml code set focusable="false" , android:clickable="false" and android:cursorVisible="false" and this will make your EditText treat like non editable.
To disable an EditText while keeping this properties, just use UI. setReadOnly(myEditText, true) from this library.
EditText and TextView are quite similar. The only difference I see hard-coded into EditText.java is to set the editable default to true, which you've set manually. Other than that, the EditText style is:
<style name="Widget.EditText">
<item name="android:focusable">true</item>
<item name="android:focusableInTouchMode">true</item>
<item name="android:clickable">true</item>
<item name="android:background">@android:drawable/edit_text</item>
<item name="android:textAppearance">?android:attr/textAppearanceMediumInverse</item>
<item name="android:textColor">@android:color/primary_text_light</item>
<item name="android:gravity">center_vertical</item>
</style>
and TextView is:
<style name="Widget.TextView">
<item name="android:textAppearance">?android:attr/textAppearanceSmall</item>
</style>
My guess is that @android:drawable/edit_text is the source of the orange box. Indeed, it contains:
<item android:state_pressed="true" android:drawable="@drawable/textfield_pressed"/>
The simplest way might be to set its background to the default one:
android:background="@android:drawable/textfield_default"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With