gpt4 book ai didi

android - 如何以编程方式更改 ImageButton 的样式

转载 作者:太空宇宙 更新时间:2023-11-03 10:25:32 26 4
gpt4 key购买 nike

在这个特定的 Activity 中,用户应该选择剪刀石头布游戏中玩家 1 和玩家 2 选择的破坏者。

我尝试了几种方法:第一种是简单地让选定的 ImageButton 被点击,但我没有找到任何解决方案来实现这一点。

第二个是将选择的 ImageButton 设置为不可点击并更改其 Image,如下图所示。在那里,玩家 1 选择了“岩石”,而玩家 2 还没有选择。如您所见,一旦我更改 ImageButtonImage,边框就会消失。

enter image description here

我像这样更改 Button 的状态

public void onClickRock1(View v){
choosenDestructor1 = 1;

buttonRock1.setImageResource(R.drawable.rock_clicked);
buttonRock1.setBackgroundColor(getResources().getColor(R.color.button_background_stay_clicked));
buttonRock1.setClickable(false);

buttonPaper1.setImageResource(R.drawable.paper);
buttonPaper1.setBackgroundColor(getResources().getColor(R.color.button_background));
buttonPaper1.setClickable(true);

buttonScissors1.setImageResource(R.drawable.scissors);
buttonScissors1.setBackgroundColor(getResources().getColor(R.color.button_background));
buttonScissors1.setClickable(true);
}

和所有其他 5 个 Button 都与此方法类似。现在,我认为用简单的 Image 覆盖 ImageButton 的样式会使我的自定义 ImageButton 样式的边框消失,但这只是猜测。

我编写了第二个具有不同背景颜色和相同边框的自定义 ImageButton 样式,但我无法从代码中弄清楚如何在 ImageButton 上设置该样式。

所以我的问题是,哪种方法最能解决这个问题(我认为是第三种,但也许还有另一种),如果是第三种,如何设置 ImageButton 的样式 来自代码。

编辑:

类似于 rgrocha 的回答,我编辑了我的 selector(它已经集成在 custom_imagebutton.xml 中),如下所示

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" android:drawable="@drawable/rock">
<shape>
<solid
android:color="@color/button_background" />
<stroke
android:width="2dp"
android:color="#FFF716" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />

</shape>
</item>
<item android:state_selected="true" android:drawable="@drawable/rock_clicked">
<shape>
<solid
android:color="@color/button_background_stay_clicked" />
<stroke
android:width="2dp"
android:color="#FFF716" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item android:drawable="@drawable/rock">
<shape>
<solid
android:color="@color/button_background" />
<stroke
android:width="1dp"
android:color="#FFFFFF" />
<corners
android:radius="0dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
</selector>

和这样的onClickRock1方法

public void onClickRock1(View v){
choosenDestructor1 = 1;
buttonRock1.setSelected(true);
buttonPaper1.setSelected(false);
buttonScissors1.setSelected(false);
}

像这样解决它的结果是为每个 ImageButton(石头、剪刀、布)制作一个 custom_imagebutton.xml,这里有以下问题:1.边框不可见(这很重要,因为我想要这些边框)2. Image 不再缩放(这没关系,因为我更喜欢这样)

所以基本上,它看起来像我上面发布的图像,除了 Image 由于没有缩放(在 layout.xml 中,我设置 scaleType="fitCenter")

最佳答案

您可以为每个要应用的状态制作一个可绘制选择器,并将其设置为主要法师或背景,您可以选择更适合您的需求。

在此选择器中,您可以对边框、颜色、图像进行任意更改。

选择器看起来像:

<item android:state_pressed="true">
<shape android:shape="rectangle" >

<solid android:color="@color/button_highlight" />
<corners android:radius="5dp" />

</shape>
</item>
<item android:state_selected="true">
<shape android:shape="rectangle" >

<solid android:color="@color/menu_bg_selected" />
<corners android:radius="5dp" />

</shape>
</item>

参见 http://developer.android.com/guide/topics/resources/drawable-resource.html对于完整的可绘制文件文档。对于您的情况,请参阅“状态选择器”。

您甚至可以使用 setSelected()、setEnabled(() 等以编程方式更改按钮的状态。

关于android - 如何以编程方式更改 ImageButton 的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13186727/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com