我有一个CheckBox可启用/禁用一对EditText视图。首先,当活动开始时,我可以点击EditText,但是当我按下CheckBox(将启用设置为false),然后再次按下复选框(据说设置EditText启用)时,我可以' t点击EditText。禁用并重新启用时无法点击EditText
这是java代码
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
final EditText etPersonTitle = (EditText)v.findViewById(R.id.et_person_title);
final EditText etFirstname = (EditText)v.findViewById(R.id.et_first_name);
final EditText etSurname = (EditText)v.findViewById(R.id.et_surname);
if(isChecked){
etPersonTitle.setText(R.string.unknown);
etFirstname.setText(R.string.unknown);
etSurname.setText(R.string.unknown);
}
else {
etPersonTitle.setText("");
etFirstname.setText("");
etSurname.setText("");
}
etPersonTitle.setEnabled(!isChecked);
etPersonTitle.setFocusable(!isChecked);
etFirstname.setEnabled(!isChecked);
etFirstname.setFocusable(!isChecked);
etSurname.setEnabled(!isChecked);
etSurname.setFocusable(!isChecked);
}
这里是XML:
<TableRow
android:id="@+id/tableRow1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
android:text="@string/title" />
<EditText
android:id="@+id/et_person_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ems="15"
android:inputType="textPersonName"
android:textAppearance="?android:attr/textAppearanceSmall" >
</EditText>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
android:text="@string/first_name" />
<EditText
android:id="@+id/et_first_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ems="15"
android:inputType="textPersonName"
android:textAppearance="?android:attr/textAppearanceSmall" >
</EditText>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
android:text="@string/surname" />
<EditText
android:id="@+id/et_surname"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ems="15"
android:inputType="textPersonName"
android:textAppearance="?android:attr/textAppearanceSmall" >
</EditText>
</TableRow>
<LinearLayout
android:id="@+id/ll_unknown_customer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:text="@string/unknown_customer" />
<CheckBox
android:id="@+id/cb_unknown_customer"
style="@style/checkbox_style"
android:background="@drawable/checkbox_background"
android:button="@null"
android:checked="false" />
</LinearLayout>
有一点要注意的是,TableLayout是滚动型内。我不确定这是什么原因导致这个问题,但这是我的第一个怀疑。
我试图setClickable(true),但它也不起作用。
在此先感谢。
你可以尝试颠倒你的逻辑,以便它变成setEnabled(isChecked);和三个EditTexts的setFocusable(isChecked)?如果问题保持不变,请分享结果。 – helleye 2014-09-05 14:24:42
首先大多数编码器不使用负逻辑!!!!!而且绝对没有人喜欢在某个问题上阅读,因为这意味着怀疑你甚至没有尝试过。 – danny117 2014-09-05 14:27:52
因此,您使用TableLayout提供的XML是单个ListView项目的布局?当使用ListView的自定义ArrayAdapter时,遇到['getView回收原则'](http://stackoverflow.com/a/14108676/1682559)列表对于屏幕来说很大(因此ListView变为滚动)。这个问题很可能存在于ArrayAdapter的getView方法中。从提供的代码中,我无法真正发现问题,但由于过去我在getView回收器方面遇到了一些问题,我认为这也会导致一些问题。 – 2014-09-05 14:56:19