我正在为一个大学项目创建一个基于 Java 的 Android 扫雷器仿制品。
现在,我找不到如何将两个按钮设置为按下状态,并在释放单击后使它们都恢复为未按下(更具体地说,"表情按钮",当按下1、2、空白或我的按钮之一时(。这就是我的意思:屏幕截图。
我尝试在 xml 中使用buttonEmotikon.setPressed(!buttonEmotikon.isActivated());
和<item android:state_pressed="true" android:drawable="@drawable/wow"/>
将微笑按钮设置为按下状态,但在 onClick 指令后它不会变回主图像。
这是微笑按钮的完整 xml 文件:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/wow"/>
<item android:state_activated="true">
<bitmap android:src="@drawable/sad"/>
</item>
<item android:state_first="true" android:drawable="@drawable/smile2"/>
<item android:drawable="@drawable/smile2"/>
</selector>
这是带有微笑按钮和通用灰色按钮(与其他按钮相同(的布局摘录:
`<ImageButton
android:layout_width="47dp"
android:layout_height="47dp" app:srcCompat="@drawable/block"
android:id="@+id/imageButton25"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="52dp"
android:layout_marginTop="4dp" app:layout_constraintTop_toBottomOf="@+id/imageButton20"
android:layout_marginBottom="8dp" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintVertical_bias="0.0" app:layout_constraintStart_toEndOf="@+id/imageButton24"
android:layout_marginStart="3dp" app:layout_constraintHorizontal_bias="0.0"
android:src="@drawable/field_bomb" tools:ignore="RtlCompat"/>
<ImageButton
android:layout_width="49dp"
android:layout_height="49dp" app:srcCompat="@drawable/smile2"
android:id="@+id/buttonEmotikon" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="8dp" app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="8dp"
android:layout_marginTop="60dp" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_bias="0.488" app:layout_constraintBottom_toBottomOf="@+id/imageView"
app:layout_constraintVertical_bias="0.019" android:src="@drawable/emotikon" tools:ignore="RtlCompat"/>`
我的 onClick 方法如下所示:
`@Override
public void onClick(View v){
Intent intent;
v.setActivated(!v.isActivated());
v.setEnabled(false);
switch (v.getId()) {
case R.id.buttonEmotikon:
' 并且有些情况下具有不同的按钮 ID。所有可单击的对象都是图像按钮。
提前谢谢。
您应该使用选择器作为 ToggleButton 的背景,并将图像置于正确的状态,如本答案所示
若要将图像更改为 isActivated 的布尔值,请添加以下代码:
<item android:state_activated="false">
<bitmap android:src="@drawable/smile2"/>
</item>