Java setEnabled在android中不起作用
我有以下代码:Java setEnabled在android中不起作用,java,android,Java,Android,我有以下代码: 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"
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>
为什么不启用工作?显然应该这样做。您希望对TextView执行什么
setEnabled(false)
如果要隐藏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>
视图可以由多个可触摸元素组成。您必须全部禁用它们,如下所示:
for(View lol : text_view.getTouchables() ) {
lol.setEnabled(false);
}
如果它是一个简单的,因为它也返回自身:
查找并返回作为此视图的后代的所有可触摸视图,如果此视图本身是可触摸的,则可能包括此视图
如果在活动中看不到更多的代码,很难预测什么是错误的。请参考此url[[1]:好的,代码现在非常大。但基本上,我展示的部分都是指我想隐藏的elemend。我应该展示哪些其他部分,在这个简单的函数中有什么关系?嗯,用不同的话来说:我在没有任何东西的情况下尝试此代码(我只是尝试隐藏文本视图)…但什么都没有发生(虽然setVisibility(GONE)在相同的配置中工作得很好),我想创建包含两个函数的活动,如:显示描述符、显示联系人、显示库。创建库时,我会向线性视图添加一些图片,但当我想(再次)显示描述符时我需要从图库中隐藏图片。我知道这可能不是最好的解决方案。我尝试了“看不见/消失”,它可以工作,但我需要一些通用的东西,所以我现在尝试使用setEnabled(并循环通过线性视图的子视图),但现在它不起作用。您应该有3个线性布局-(1)用于描述,(2)对于画廊图像。将这两个线性布局包装在第三个或另一个线性布局(3)(或框架布局,具体取决于您希望它的显示方式)。然后您可以使用layout.setVisiblity(View.GONE)隐藏整个内部线性布局(1)或(2)通过这种方式,你可以隐藏画廊或描述的父对象,布局中的所有子对象都将隐藏tooThanx,我将尝试一下,并发布一些代码。确定+1。杰夫,这不是我最初的问题。但你确实解决了我的问题,我的应用程序现在运行良好:D。我再次单击你,表示接受。Thanx。我当使用它们作为选择器时,使用
state\u enabled
可以发现一些有趣的行为。基本上确保您按下了state\u
或state\u enabled
。这两个选项都不允许启用状态注册。还有人注意到吗?
for(View lol : text_view.getTouchables() ) {
lol.setEnabled(false);
}