从Android中的EditText中移除焦点

时间:2016-05-18 06:59:01

标签: android android-layout android-edittext

我的布局中按上述顺序排列了两个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>

4 个答案:

答案 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上使用它对我有用