【问题标题】:Android: How do I make an imageButton change when clicked and revert when un-clicked?Android:如何在单击时更改 imageButton 并在未单击时还原?
【发布时间】:2020-12-31 11:39:15
【问题描述】:

我正在创建一个 android 应用程序,我希望将 ImageButton 更改为我在按下时创建的按下精灵,然后在按下它时更改回原始精灵。

我尝试弄乱.isPressed() 函数,但它与event 函数不同,因此它不像ACTION_DOWN 那样工作,它主要冻结程序并且偶尔会做一些事情但不是它应该做的事情。

谁能帮忙?

XML:

<ImageButton
                android:id="@+id/player_down"
                android:layout_width="wrap_content"
                android:layout_height="40dp"
                android:layout_weight="1"
                android:background="#00000000"
                android:scaleType="centerInside"
                app:srcCompat="@drawable/player_down_1"

主活动:

public void onClick(View view) {
if (view == player_down) {
     pixelGridView.player_goDown();
}
           

MainActivity 与提交的尝试:

if (view == player_down) {
   player_down.setImageResource(R.drawable.player_down_2);
   if(!player_down.isPressed()) {
        player_down.setImageResource(R.drawable.player_down_1);
        pixelGridView.player_goDown();
   }
}

【问题讨论】:

标签: android


【解决方案1】:

一个简单的答案可能是使用布尔值和不同的资产,例如切换按钮

MainActivity

Boolean isClicked = false;

public void onClick(View view) {
if (view == player_down) {

   if(isClicked == true){
       isClicked = false;
       // change your button here
   }else{

       isClicked = true;       
       // change your button here
   }
     pixelGridView.player_goDown();
}
  

【讨论】:

    【解决方案2】:

    你可以像 button.xml 一样创建 XML :

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" >
    <shape>
        <solid
            android:color="#343434" />
        <stroke
            android:width="1dp"
            android:color="#171717" />
        <corners
            android:radius="3dp" />
        <padding
            android:left="10dp"
            android:top="10dp"
            android:right="10dp"
            android:bottom="10dp" />
    </shape>
    </item>
      <item>
        <shape>
           <gradient
            android:startColor="#343434"
            android:endColor="#171717"
            android:angle="270" />
        <stroke
            android:width="1dp"
            android:color="#171717" />
        <corners
            android:radius="4dp" />
        <padding
            android:left="10dp"
            android:top="10dp"
            android:right="10dp"
            android:bottom="10dp" />
    </shape>
      </item>
    </selector>
    

    并像这样将您的按钮设置为背景:

    <Button
    android:id="@+id/btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:background="@drawable/button"
    android:text="String"
    android:textColor="@android:color/white"
    android:textSize="16sp"
    android:textStyle="bold" />
    

    如果您想更改按钮文本颜色,请在 res/color/btnext.xml 中创建 XML 文件:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
      android:color="#ffff0000"/> <!-- pressed -->
    <item android:state_focused="true"
      android:color="#ff0000ff"/> <!-- focused -->
    <item android:color="#ff000000"/> <!-- default -->
    </selector>
    

    并设置此布局 XML 将颜色列表应用于视图:

    <Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/button_text"
    android:textColor="@color/btntext" />
    

    您还可以创建两个不同的按钮,并通过将其中一个的可见性设置为“已消失”来在它们之间切换。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-17
      • 1970-01-01
      • 1970-01-01
      • 2012-12-19
      • 2012-11-03
      相关资源
      最近更新 更多