android编辑文本更改背景在焦点

don*_*hua 3 keyboard android android-edittext

我在我的应用程序中使用了编辑文本,我想在编辑文本聚焦时更改背景.我写了一些代码,但我遇到了一个问题.我需要两次单击编辑文本才能显示键盘.

这是我的代码:

  private View.OnFocusChangeListener myEditTextFocus =  new View.OnFocusChangeListener() {
    public void onFocusChange(View view, boolean hasfocus) {
        if (hasfocus) {
            ((EditText) view).setBackgroundResource(R.drawable.edittext_input_background_focus);

            ((EditText) view).setTextColor(Color.parseColor("#4d4d4d"));

        }
        else {
            ((EditText) view).setBackgroundResource(R.drawable.edittext_input_background_not_focus);

        }
    };
};
Run Code Online (Sandbox Code Playgroud)

问题是这个代码,因为我评论它,一切都很完美.我的代码出了什么问题?或者,还有其他解决方案吗?

Chi*_*ani 7

//请遵循此代码

将这3个可绘制文件放在res/drawable文件夹中

simple_edittext.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:padding="10dp"
    android:shape="rectangle" >

    <solid android:color="#FFFFFF" />

    <stroke
        android:width="3dp"
        android:color="#FB9820" />

    <corners
        android:bottomLeftRadius="5dp"
        android:bottomRightRadius="5dp"
        android:topLeftRadius="5dp"
        android:topRightRadius="5dp" />

</shape>
Run Code Online (Sandbox Code Playgroud)

focus_edittext.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:padding="10dp"
    android:shape="rectangle" >
    <solid android:color="#58ACFA" />

    <stroke
        android:width="3dp"
        android:color="#FB9820" />
    <corners
        android:bottomLeftRadius="5dp"
        android:bottomRightRadius="5dp"
        android:topLeftRadius="5dp"
        android:topRightRadius="5dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)

selector_edittext.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:drawable="@drawable/focus_edittext"/>
    <item android:drawable="@drawable/simple_edittext" />
</selector>
Run Code Online (Sandbox Code Playgroud)

并使用这样的这些抽象:

 <EditText
        android:id="@+id/layout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:layout_marginBottom="10dp"
        android:background="@drawable/selector_edittext"
        android:text="@string/hello_world" />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/layout1"
        android:padding="10dp"
        android:background="@drawable/selector_edittext"
        android:text="@string/hello_world" />
Run Code Online (Sandbox Code Playgroud)