我有四个按钮,用户应该一次选择一个按钮。
<Button
android:id="@+id/button1"
android:layout_weight="1"
android:background="@drawable/btnindicator"
android:focusable="true"
android:focusableInTouchMode="true"
android:drawableLeft="@drawable/btnbg"
android:gravity="center"
android:padding="20dip"
android:text="Button1"
android:textColor="#000000" />
<Button
android:id="@+id/button2"
android:layout_weight="1"
android:background="@drawable/btnindicator"
android:focusable="true"
android:focusableInTouchMode="true"
android:drawableLeft="@drawable/btnbg"
android:gravity="center"
android:padding="20dip"
android:text="Button2"
android:textColor="#000000" />
<Button
android:id="@+id/button3"
android:layout_weight="1"
android:background="@drawable/btnindicator"
android:focusable="true"
android:focusableInTouchMode="true"
android:drawableLeft="@drawable/btnbg"
android:gravity="center"
android:padding="20dip"
android:text="Button3"
android:textColor="#000000" />
<Button
android:id="@+id/button4"
android:layout_weight="1"
android:background="@drawable/btnindicator"
android:focusable="true"
android:focusableInTouchMode="true"
android:drawableLeft="@drawable/btnbg"
android:gravity="center"
android:padding="20dip"
android:text="Button4"
android:textColor="#000000" />
这是btnindicator.xml,用于显示按钮的按下/聚焦状态。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape>
<gradient android:angle="270" android:endColor="@color/LightBlue" android:startColor="@color/DodgerBlue" />
<stroke android:width="3dp" android:color="@color/PowderBlue" />
<corners android:radius="3dp" />
<padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
</shape>
</item>
<item android:state_focused="true">
<shape>
<gradient android:angle="270" android:endColor="@color/LightBlue" android:startColor="@color/DodgerBlue" />
<stroke android:width="3dp" android:color="@color/PowderBlue" />
<corners android:radius="3dp" />
<padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
</shape>
</item>
<item>
<shape>
<gradient android:angle="270" android:endColor="@color/Wheat" android:startColor="@color/WhiteSmoke" />
<stroke android:width="3dp" android:color="@color/FloralWhite" />
<corners android:radius="3dp" />
<padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
</shape>
</item>
</selector>
以下是侦听Click侦听器的代码
public Button button1,button2,button3,button4;
button1 = (Button) view.findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG,"Clicked button1");
selected = true;
}
});
但问题是只有当按钮点击两次时,才会触发非聚焦按钮的点击事件。
例如:如果按下button1,那么如果我在button2上单击两次,则会调用click listener上的button2。
我更改了button1.setOnFocusChangeListener()
和button1.setOnTouchListener()
,两者都运行良好。
但是我无法解决setOnClickListener方法的问题..
答案 0 :(得分:1)
设置为根布局
android:splitMotionEvents="false"
希望,这会对你有帮助。