如果我只有1个edittext,如何使用onFocusChange?

时间:2015-02-13 08:25:31

标签: java android

当我在edittext中失去焦点或在布局中单击空白空间时我尝试动作但如果我有1个edittext则它不会工作。

我在Main.java中的代码

editText.setOnFocusChangeListener(new OnFocusChangeListener(){

    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if(!hasFocus){

        Toast.makeText(getApplicationContext(), "DONE", Toast.LENGTH_SHORT).show();

        }
    }
});

这是我的XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:focusableInTouchMode="true"
tools:context="com.example.pollk.Main" >

<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="34dp"
    android:ems="10" >

    <requestFocus />
</EditText>

3 个答案:

答案 0 :(得分:0)

在xml文件中添加android:focusableInTouchMode="true"

答案 1 :(得分:0)

  1. 如果您的RelativeLayout包含其他类型的视图,只需为它们设置以下属性即可使它们具有焦点:
  2. android:focusable="true"
    android:focusableInTouchMode="true"
    
    1. 向RelativeLayout添加OnClickListener,这样您就可以在空白处单击时收到点击事件。

答案 2 :(得分:0)

我有疑问。所以我试试这段代码。

        edit.setOnFocusChangeListener(new OnFocusChangeListener(){

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            // TODO Auto-generated method stub
            if(!hasFocus){
                Toast.makeText(getApplicationContext(), "DONE", Toast.LENGTH_SHORT).show();
            }
        }});


    final RelativeLayout layout1=(RelativeLayout)findViewById(R.id.hidebg);
    layout1.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View v) {

        }   
    });

它为我工作但这是一个正确的解决方案?因为我声明了onclick功能,但我没有使用它。