2

我有一个 ViewFlipper,我希望在显示的子项发生更改时触发监听器。我已经为 ViewFlipper 设置了一个 OnFocusChangeListener,但是当我从孩子 0 翻转到孩子 1 时它永远不会触发,反之亦然。ViewFlipper 包含两个RelativeLayouts,我尝试为它们设置OnFocusChangeListeners,但是当我尝试设置它时我得到一个ClassCastException。这是我的代码:

RelativeLayout songsLayout = (RelativeLayout) findViewById(R.id.song_page_layout);
songsLayout.setOnFocusChangeListener(new OnFocusChangeListener() {
    public void onFocusChange(View view, boolean hasFocus) {
        showPopUp("View " + view.getId() + " now has focus: " + hasFocus);
    }       
} );

R.is.song_page_layout 是我的 RelativeLayouts 之一,而 showPopUp() 是我用来显示弹出窗口的函数。

有没有人有某种触发器的工作代码,当 ViewFlipper 更改显示哪个孩子时触发?

4

1 回答 1

3

我认为您不了解“专注”在 Android 上的含义;当用户选择该视图时,例如当他们通过按下它来选择 EditText,或者他们使用键盘选择一个按钮时。当 ViewFlipper 切换视图时,它不会获得或失去焦点。

据我所知,您可以:

  1. 不要使用 ViewFlipper 的自动翻转,而是在您希望它翻转时手动调用 showNext()(然后在代码中自己设置间隔)。

  2. 子类化或重新实现 ViewFlipper 并根据自己的喜好添加更改侦听器。

于 2010-04-20T03:45:07.250 回答