0

我有这样的布局:

<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="wrap_content"
    android:background="@drawable/border_selector"
    android:orientation="vertical"
    android:focusable="true" >

    <ProgressBar
        android:id="@+id/progressBar1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:indeterminateDrawable="@drawable/custom_progress_bar"
        android:visibility="gone" />

    <AutoCompleteTextView
        android:id="@+id/autoComplete"
        android:layout_width="fill_parent"
        android:layout_height="48dp"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@id/progressBar1"
        android:background="@android:color/transparent"
        android:gravity="center_vertical" />

</RelativeLayout>

哪里border_selectorselector父布局。内部孩子AutoCompleteTextView没有任何背景或边框。所以,在这个AutoCompleteTextView焦点上,我想让 Parent 也得到焦点,以便选择器工作。

我试过这个(它没有用。即使它有效,我想这也不是一个好的解决方案):

    autoComplete.setOnFocusChangeListener(new View.OnFocusChangeListener() {

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

            if(hasFocus){
                parent.requestFocus();
            }else{
                parent.clearFocus();
            }
        }
    });
4

1 回答 1

0

当视图具有焦点时,您似乎正试图使布局看起来被选中。当它获得焦点时,而不是使用选择器以编程方式更改布局的背景。

但是您应该知道这不是 Android 的预期行为,您很可能应该保持原样:)

编辑:

 android:layout_toLeftOf="@id/progressBar1"

删除这一行,这样进度条将出现在文本视图内,请参见此处以供参考:将进度条放入编辑文本中,在用户输入内容后启动

于 2013-07-23T06:06:15.957 回答