0

我有带有页眉和页脚的 ListView。Header - 是带有一组 EditTexts 和 Spinners 的长 ScrollView。页脚中有两个按钮。当我单击其中一个 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,因为 listview 和按钮正在争夺焦点,而 listview 正在获胜。这就是为什么当您单击列表视图时,按钮不再触发,因为列表视图获得了焦点。

于 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 回答