当前位置: 首页 > 知识库问答 >
问题:

android edittext点击按钮后删除焦点

王长卿
2023-03-14

我有一个带有EditText和按钮的活动。当用户单击EditText时,会显示键盘,他可以输入一些Text-很好。但是当用户单击按钮时,我希望EditText不再对焦,即键盘隐藏,直到用户再次单击EditText。

单击按钮后,如何“隐藏EditText的焦点”。我可以在按钮的OnClick方法中添加一些代码来实现这一点?

编辑:

<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <EditText 
        android:id="@+id/edt_SearchDest"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="0.8"
        android:textSize="18sp"
        android:hint="Enter your look-up here.." />

    <Button
        android:id="@+id/btn_SearchDest"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="0.2"
        android:text="Search" />

</LinearLayout>

顺致敬意,

共有3个答案

谭景明
2023-03-14

我已成功地在onClick按钮代码中使用了以下内容:

editText.setEnabled(false);
editText.setEnabled(true);

比其他方法稍微简单一些。。。

房星光
2023-03-14

一种解决方法是创建一个假视图以将焦点转移到您在edittext中的clearFocus时:

<EditText
        android:id="@+id/edt_thief"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:focusable="true"
        android:focusableInTouchMode="true"

请注意,此视图不可见,因此它不需要布局中的任何空间。

在control类中,可以添加如下方法来触发此焦点转移:

public void clearFocus(){
        yourEdittext.clearFocus();
        edtThief.requestFocus();
    }

然后,一旦edtThief具有焦点,您就可以最小化键盘:

 public static void hideKeyboard(final View view) {
    InputMethodManager imm = (InputMethodManager) view.getContext()
            .getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
周阳波
2023-03-14

将此内容放入按钮侦听器:

InputMethodManager inputManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 

inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS);

编辑

如果没有关注编辑文本,上述解决方案将破坏你的应用程序。按如下方式修改代码

将此方法添加到类:

public static void hideSoftKeyboard (Activity activity, View view) 
{
    InputMethodManager imm = (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(view.getApplicationWindowToken(), 0);
}

然后,在您的按钮侦听器中,像这样调用该方法:

hideSoftKeyboard(MainActivity.this, v); // MainActivity is the name of the class and v is the View parameter used in the button listener method onClick.
 类似资料:
  • 我正在制作看板,我有一列在里面,它用一个网格窗格划分在标题和下面的卡片列表之间。我正在使用场景生成器构建此场景。 所以层次结构是 当我按下卡上的按钮时,我希望它移除我单击的卡。 我已经做了以下工作 然而,当我按下按钮时什么也没有发生,卡没有被删除,我也不知道为什么。如果有人能帮我,那就太好了。

  • 我有两个JFrame表单,它们接受诸如姓名、Rollno、注册号、性别等信息,姓名和性别在第一个JFrame表单上,而其他详细信息在第二个JFrame表单上,在单击“下一个表单”按钮后,所有信息都存储在MySql数据库中,相同的按钮将用户带到下一个表单,如果用户在第一个表单中填写所有详细信息,然后单击表单的“下一个表单”按钮并退出第二个表单,那么只有一半数据库有详细信息,而另一半没有信息。所以,请

  • 我下面有一个图片,它是一个按钮。 我似乎找不到:焦点或:点击的css在Chrome beggger。 下面是html

  • 我一直在尝试使用selenium完成输入框,但在单击添加新客户按钮后总是找不到该输入框,它总是显示一个空白的白页。我通过chrome和fire fox@Test public val AddTouch()抛出中断异常{

  • 我就是不能点击按钮进入下一页。目前为止我尝试了以下方法 编辑 关键是重新定位元素,重新加载。由于我在表单中单击,底层代码发生了变化。司机。通过xpath(//button[@type='submit'][@name='button'])查找元素。因此,click()无法找到元素。重新加载驱动程序后。get(“%s/%s:%s”%(str(sys.argv[4])、str(sys.argv[2])、