我一直在努力在 StackOverflow 或其他地方寻找解决方案,但我找不到任何直接谈论这个特定问题的帖子,也许除了我再也找不到的可能最接近的帖子。但是,如果这仅仅是因为我忽略了某些东西或者我只是一个大菜鸟,请提前道歉。
无论如何,我正在尝试将 OnTouchListener 设置为 ViewFlipper (父母),并将 setOnClickListener 设置为 Button (子),它会填充父布局。我希望首先调用 ViewFlipper 的 onTouch() 事件。想如果 ViewFlipper 的 onTouch() 返回 false,Button 的 onClick() 就会被触发。但是,只调用了 Button 的 onClick()。为什么?有没有明确的优先级?
或者,我可以为 Button 设置一个 onTouchListener,因为 Button 具有 'match_parent' 属性,因此触摸此 viewflipper 与触摸此按钮几乎相同,即使我这样做了,它只会使 Button 的 onClick() 事件未触发。 ...
以下是我的简化活动;
public class TestActivity extends Activity implements OnTouchListener, View.OnClickListener {
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ViewFlipper vf = (ViewFlipper) findViewById(R.id.viewFlipper1);
Button btn = (Button) this.findViewById(R.id.btnTest1);
vf.setOnTouchListener(this);
btn.setOnClickListener(this);
}
主.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ViewFlipper
android:id="@+id/viewFlipper1"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<include
android:id="@+id/button"
layout="@layout/test" />
</ViewFlipper>
</LinearLayout>
测试.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/testLinear"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="false"
android:orientation="vertical" >
<Button
android:id="@+id/btnTest1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Button" />
</LinearLayout>