有没有办法让Android中的EditText
行为像TextView
(首选XML)?
我尝试过以下方法:
android:editable="false"
android:focusable="false"
android:focusableInTouchMode="false"
android:cursorVisible="false"
android:longClickable="false"
这样可行,但我仍然可以触摸EditText
以获得焦点(橙色寄宿生),尽管一旦我移开手指,焦点就会丢失。
我不确定focusableInTouchMode
是做什么的,但是当我一直接触时它并没有消除焦点。
而我不使用白色背景TextView
的原因是TextView
的背景很难看。 EditText
的背景有圆角和阴影效果。
提前致谢。
答案 0 :(得分:10)
EditText
和TextView
非常相似。我看到硬编码到EditText.java的唯一区别是将可编辑的默认值设置为true,这是您手动设置的。除此之外,EditText
style是:
<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>
和TextView
是:
<style name="Widget.TextView">
<item name="android:textAppearance">?android:attr/textAppearanceSmall</item>
</style>
我的猜测是@android:drawable/edit_text
是橙色框的来源。确实,it contains:
<item android:state_pressed="true" android:drawable="@drawable/textfield_pressed"/>
最简单的方法可能是将其背景设置为默认值:
android:background="@android:drawable/textfield_default"
答案 1 :(得分:2)
有多少不同和错误的方式( 始终使用
myEditText.setEnabled(false);
答案 2 :(得分:1)
现在我有了新的方法。由于我关闭了EditText
的大部分功能,因此最好考虑如何“美化”TextView
的丑陋白色背景。答案在源代码中:
只需将android:background="@android:drawable/edit_text"
添加到TextView
即可产生相同的效果。
再次感谢马修。
答案 3 :(得分:0)
您可以使用your_edit_text.setKeyListener(null);
简化来使其无法使用..
答案 4 :(得分:0)
如果您希望EditText
不可编辑或可聚焦(就像TextView
一样)但背景正确,则可以在?editTextBackground
上使用属性TextView
。如果您使用像@android:drawable/edit_text
这样的drawable,它将不会使用依赖于api版本的背景。
此:
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content" />
具有相同的UI属性:
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?editTextBackground"/>
答案 5 :(得分:0)
要使EditText不可触摸:
android:enabled="false"
android:clickable="false"
android:longClickable="false"
要使EditText看起来像TextView:
android:background="@android:color/transparent"