我的布局中按上述顺序排列了两个EditText
和一个CheckBox
以及一个Button
。输入EditText
的值后,用户必须通过点击Checkbox
接受条款和条件。单击复选框后,我需要从EditText
s中删除焦点。现在焦点总是在第二个EditText
上。怎么能实现这一目标?请帮忙。
的布局:
<EditText
android:id="@+id/pm_et_customer_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/customer_id_hint"
android:fontFamily="sans-serif-light"
android:gravity="center"
android:singleLine="true"
android:layout_centerHorizontal="true"
android:inputType="phone"
android:textAppearance="?android:attr/textAppearanceMedium"/>
<RelativeLayout
android:id="@+id/pm_rl_mob_no_widget"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="6dp"
android:layout_below="@id/pm_et_customer_id"
android:gravity="center_horizontal">
<EditText
android:id="@+id/pm_et_dial_code"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/pm_et_msisdn"
android:layout_marginLeft="5dp"
android:ems="3"
android:fontFamily="sans-serif-thin"
android:gravity="center"
android:text="@string/plus_nine_one"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
<EditText
android:id="@+id/pm_et_msisdn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/pm_et_dial_code"
android:ems="9"
android:fontFamily="sans-serif-light"
android:gravity="center_horizontal"
android:hint="@string/msisdn_hint"
android:inputType="phone"
android:maxLength="14"/>
</RelativeLayout>
<Button
android:id="@+id/pm_bt_proceed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/lay_t_c"
android:layout_centerHorizontal="true"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="8dp"
android:fontFamily="sans-serif-light"
android:text="@string/bt_label_proceed"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/pm_rl_mob_no_widget"
android:id="@+id/lay_t_c"
android:layout_marginTop="10dp"
android:gravity="center"
android:orientation="horizontal">
<CheckBox
android:id="@+id/pm_check_t_and_c"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-thin"
android:textSize="14sp"
android:text="@string/pm_label_accept"/>
<TextView
android:id="@+id/pm_tv_t_and_c"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginRight="4dp"
android:layout_marginEnd="4dp"
android:paddingLeft="4dp"
android:paddingStart="4dp"
android:fontFamily="sans-serif-light"
android:text="@string/pm_label_t_and_c"
android:textSize="14sp"/>
</LinearLayout>
</RelativeLayout>
答案 0 :(得分:1)
checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editText.setFocusable(false);
}
});
将上面的OnClickListener添加到复选框。
答案 1 :(得分:1)
checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editText.setFocusable(false);
}
});
删除焦点后,请再做一次..
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
答案 2 :(得分:1)
使用
上应用此功能即可onCheckedChangeListener
Check Box
您可以执行此操作。只需在Activity's onCreate()
chb1 = (CheckBox) findViewById(R.id.pm_check_t_and_c);
chb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (chb1.isChecked()) {
edt1.clearFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edt1.getWindowToken(), 0);
} else {
edt1.requestFocus();
}
}
});
答案 3 :(得分:-2)
editText.setEnabled(false);
在Checkbox listner上使用它对我有用