【问题标题】:How to change two button images when clicking one in Android?在Android中单击一个按钮时如何更改两个按钮图像?
【发布时间】:2020-04-30 15:10:04
【问题描述】:

我正在为一个大学项目创建一个 基于 Java 的 Android 扫雷仿制品。

现在,我找不到如何将两个按钮设置为按下状态,并在释放点击后使它们都恢复为未按下(更具体地说“表情按钮”,当按下 1、2、空白或我的按钮之一时)。这就是我的意思:Screenshot

我尝试在 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 不同。所有可点击的对象都是 ImageButtons。

提前致谢。

【问题讨论】:

  • 请添加可绘制资源和布局的完整代码
  • 感谢您的回答。我已经用更多代码更新了第一篇文章。

标签: java android image button pressed


【解决方案1】:

您应该使用选择器作为 ToggleButton 的背景,并将您的图像置于正确的状态,例如 answer

【讨论】:

  • 非常感谢,我去看看。
【解决方案2】:

要将图像更改为 isActivated 的布尔值,请添加以下代码:

<item android:state_activated="false">
    <bitmap android:src="@drawable/smile2"/>
</item>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多