gpt4 book ai didi

java - 仅通过 XML(无需其他可绘制对象)单击时如何更改按钮的颜色?

转载 作者:太空宇宙 更新时间:2023-11-04 15:07:35 24 4
gpt4 key购买 nike

我想在按下或聚焦按钮时更改按钮的颜色,或者事实上,在任何状态下更改按钮的颜色。但是,我不仅想通过 XML 来实现,而且不想使用其他可绘制对象。之前解决此问题的问题,例如 Highlight a button when it pressed without using two drawable?How to Change color of Button in Android when Clicked?可以在不使用可绘制对象的情况下以编程方式执行此操作,也可以通过 XML 使用可绘制对象来执行此操作。是否有我可以在button.xml 文件中设置的属性,或者可以在突出显示或单击时更改 View 背景颜色的属性,而无需咨询Java?

这是我的activity_main.xml 的代码。如果还不是很明显,我将使用静态图像作为手机井字游戏的游戏板。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<ImageView
android:id="@+id/gameBoard"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:contentDescription="@string/gameboard"
android:src="@drawable/gameboard" />

<ImageButton
android:id="@+id/squareOne"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginBottom="288dp"
android:layout_marginRight="219dp"
android:layout_marginTop="71dp"
android:background="@android:color/transparent"
android:contentDescription="@string/top_left"
android:src="@drawable/blank_button" />

<ImageButton
android:id="@+id/squareTwo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/squareOne"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/squareOne"
android:layout_marginLeft="110dp"
android:layout_marginRight="108dp"
android:background="@android:color/transparent"
android:contentDescription="@string/top_middle"
android:src="@drawable/blank_button" />

<ImageButton
android:id="@+id/squareThree"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/squareTwo"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/squareTwo"
android:minWidth="100dp"
android:background="@android:color/transparent"
android:contentDescription="@string/top_right"
android:src="@drawable/blank_button" />

<ImageButton
android:id="@+id/squareFour"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignRight="@+id/squareOne"
android:layout_below="@+id/squareTwo"
android:layout_marginBottom="179dp"
android:layout_marginTop="9dp"
android:background="@android:color/transparent"
android:contentDescription="@string/middle_left"
android:src="@drawable/blank_button" />

<ImageButton
android:id="@+id/squareFive"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/squareFour"
android:layout_alignLeft="@+id/squareTwo"
android:layout_alignRight="@+id/squareTwo"
android:layout_alignTop="@+id/squareFour"
android:background="@android:color/transparent"
android:contentDescription="@string/middle"
android:src="@drawable/blank_button" />

<ImageButton
android:id="@+id/squareSix"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/squareThree"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/squareFive"
android:layout_marginBottom="178dp"
android:background="@android:color/transparent"
android:contentDescription="@string/middle_right"
android:src="@drawable/blank_button" />

<ImageButton
android:id="@+id/squareSeven"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignRight="@+id/squareFour"
android:layout_below="@+id/squareFive"
android:layout_marginBottom="70dp"
android:layout_marginTop="10dp"
android:background="@android:color/transparent"
android:contentDescription="@string/bottom_left"
android:src="@drawable/blank_button" />

<ImageButton
android:id="@+id/squareEight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/squareSeven"
android:layout_alignLeft="@+id/squareFive"
android:layout_alignRight="@+id/squareFive"
android:layout_alignTop="@+id/squareSeven"
android:background="@android:color/transparent"
android:contentDescription="@string/bottom"
android:src="@drawable/blank_button" />

<ImageButton
android:id="@+id/squareNine"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/squareEight"
android:layout_alignLeft="@+id/squareSix"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/squareEight"
android:background="@android:color/transparent"
android:contentDescription="@string/bottom_right"
android:src="@drawable/blank_button" />

</RelativeLayout>

我使用一个blank_button.png 文件并将其拉伸(stretch)到gameBoard ImageView 上的每个方 block 上。我知道我从所有讨厌的人那里知道我应该使用相对布局,但我只是在寻找这个应用程序在特定类型的设备上运行。

最佳答案

通过xml,你可以通过google搜索。我将向你展示一种解决问题的方法。 A forum which mentioned this problem

当然,如果你不使用xml,则必须将其更改为java代码。这很简单,但这意味着它不会显示复杂的效果。

补充:重写onStateChange方法,你应该重写你的widget。

关于java - 仅通过 XML(无需其他可绘制对象)单击时如何更改按钮的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21791838/

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