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_selectora はどこにありますか。selectorインナーチャイルドAutoCompleteTextViewには背景や境界線がありません。したがって、このAutoCompleteTextViewフォーカスでは、セレクターが機能するように親にもフォーカスを当てたいと思います。

私はこれを試しました(うまくいきませんでした。うまくいったとしても、これは良い解決策ではないと思います):

    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 に答える