我希望在按下或聚焦按钮时更改按钮的颜色,或者实际上是任何状态。但是,我想不仅通过XML,而且不使用另一个drawable。解决此问题的先前问题,例如Highlight a button when it pressed without using two drawable?和How to Change color of Button in Android when Clicked?,无论是通过编程还是通过XML进行编程,都可以执行此操作。是否有我可以在button.xml文件中设置的属性,或者可以在突出显示或单击时更改视图的背景颜色,而无需咨询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文件并将其拉伸到gameBoard ImageView上的每个方块上。我知道我从你们所有的人那里知道我应该使用相对布局,但我只是想在特定类型的设备上运行这个应用程序。
答案 0 :(得分:0)
通过xml,您可以通过google搜索。我将向您展示一种解决问题的方法。 A forum which mentioned this problem
当然,如果您不使用xml,则必须将其更改为java代码。这很简单,但这意味着它不会显示复杂的效果。
补充:覆盖onStateChange方法,你应该覆盖你的小部件。