gpt4 book ai didi

java - 禁用和重新启用时无法单击 EditText

转载 作者:行者123 更新时间:2023-11-30 02:41:29 25 4
gpt4 key购买 nike

我有一个 CheckBox 可以启用/禁用几个 EditText View 。起初,当 Activity 开始时,我可以点击 EditText,但是当我按下 CheckBox(将启用设置为 false)然后再次按下复选框(据说将 EditText 设置为启用)时,我可以' t 单击 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 位于 ScrollView 内。我不确定这是否是导致此问题的原因,但这是我的第一个怀疑。

我尝试设置 setClickable(true) 但它也不起作用。

提前致谢。

最佳答案

这样做。

if (isChecked) {
etPersonTitle.setText("asd");
etFirstname.setText("asd");
etSurname.setText("asd");
etPersonTitle.setEnabled(!isChecked);
etPersonTitle.setFocusable(!isChecked);
etFirstname.setEnabled(!isChecked);
etFirstname.setFocusable(!isChecked);
etSurname.setEnabled(!isChecked);
etSurname.setFocusable(!isChecked);
}

else {
etPersonTitle.setText("");
etFirstname.setText("");
etSurname.setText("");

etPersonTitle.setEnabled(true);
etPersonTitle.setFocusableInTouchMode(true);

etFirstname.setEnabled(true);
etFirstname.setFocusableInTouchMode(true);

etSurname.setEnabled(true);
etSurname.setFocusableInTouchMode(true);

}

关于java - 禁用和重新启用时无法单击 EditText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25687824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com