0

ヘッダーとフッターを含むListViewがあります。ヘッダー-EditTextsとSpinnersのセットを備えた長いScrollViewです。フッターには2つのボタンがあります。EditTextの1つをクリックし、その後フッターのボタンをクリックしても起動しません。別のヘッダーの要素をクリックすると、フッターのボタンハンドラーの結果が表示されます。このEditTextをクリックしないと、フッターのボタンが正しく機能します。私のEditText:

<EditText
    android:id="@+id/orderTitle"
    android:layout_width="250dp"
    android:layout_height="wrap_content"
    android:layout_below="@+id/levelSpin"
    android:layout_marginTop="30dp"
    android:text="Order title(specify)"
    android:gravity="center_vertical|center_horizontal" />

editTextをクリックするとフッタービューの焦点がぼけてしまうという問題があると思います。だから私は私のボタンのsetOnClickListenerでこのようにしようとしました:

btnSubmitOrder.setOnClickListener(new View.OnClickListener() {

    public void onClick(View view) {
        footer.setFocusableInTouchMode(true);
        deadline.setFocusable(false);
        orderTitle.setFocusable(false);
        header.clearFocus();
        btnSubmitOrder.setFocusable(true);
        Log.i("new order button","fires");
        boolean errorFlag = false;
    }
});

しかし、それは役に立ちません。私もこれを好きにしようとしました:

orderTitle.setOnEditorActionListener(new OnEditorActionListener() {

    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_DONE) {
            orderTitle.setFocusable(false);
            Log.i("onEditorAction","yeah");
        }
        Log.i("onEditorAction","yeah");
        return false;
    }
});

ユーザーのアクションが終了したときにこのEditTextのフォーカスを外しますが、それも役に立ちませんでした。この問題を解決するにはどうすればよいですか?

4

2 に答える 2

1

別の選択肢があり、フッターに次のように設定します。別のメソッドのオーバーロードが作成されましたが、ドキュメントには表示されませんでした (少なくとも私の IDE では表示されませんでした)。オンライン ドキュメントを確認する必要がありました。

mylistView.addFooterView(footerView, null, **false**);

false は、フッターが選択できないことを示します。これを自分でテストしたところ、フッター内のボタンがタッチに反応しました。これが受け入れられる答えであることを願っています。

それ以外の場合は、リストビューとボタンがフォーカスを争っており、リストビューが勝っているため、 ontouchlistener を使用する必要があります。そのため、リストビューをクリックすると、リストビューにフォーカスが移ったため、ボタンが起動しなくなりました。

于 2013-02-26T14:13:16.627 に答える
0

を使用して問題を解決しました

btnSubmitOrder.setOnTouchListener(new OnTouchListener() {

            public boolean onTouch(View v, MotionEvent event) {
                 if (event.getAction() == MotionEvent.ACTION_DOWN)
                        {
                     header.clearFocus();
                        }
                   }
         });
于 2012-10-22T13:24:39.423 に答える