3

我有这个代码:

public TextView main_text;//begining of the class

main_text = (TextView) findViewById(R.id.TextMain); //inside OnCreate

main_text.setEnabled(false); //inside button handler

现在是 Xml 的一部分

    <TextView
        android:id="@+id/TextMain"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="left"
        android:textColor="#FFFFFF"
        android:text="@string/home_load" >

    </TextView>

为什么 SetEnable 不起作用?这似乎很明显,它应该。

4

2 回答 2

13

你希望setEnabled(false)对 TextView 做什么?

如果你想隐藏 TextView,你应该打电话setVisibility(View.INVISIBLE)

如果你想禁用点击,你应该打电话setOnClickListener(null)

如果希望文本以禁用状态显示,则需要在单独的 XML 文件中定义视图的状态。

例如 textView.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="true" android:color="@color/enabled" />
    <item android:state_enabled="false" android:color="@color/disabled" />
</selector>

然后在您的 TextView 定义中使用

android:textColor="@drawable/textView"
于 2012-11-15T16:23:42.297 回答
0

视图可以由多个可触摸元素组成。您必须将它们全部禁用,如下所示:

for(View lol : text_view.getTouchables() ) {
    lol.setEnabled(false);
}

如果它是一个简单的,因为它也返回自己:

查找并返回作为该视图后代的所有可触摸视图,如果它本身是可触摸的,则可能包括该视图。

查看#getTouchables()

于 2013-10-18T09:47:29.917 回答