Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单击时图像按钮背景颜色更改_Java_Android_Xml - Fatal编程技术网

Java 单击时图像按钮背景颜色更改

Java 单击时图像按钮背景颜色更改,java,android,xml,Java,Android,Xml,不过,Android开发人员在过去第一次使用C#和Java 尝试制作一个简单的、类似Windows 8的GUI。目前,我有一个在activity_main.xml中设置了背景颜色的磁贴(ImageButton) <ImageButton android:id="@+id/btn1" android:layout_width="120dp" android:layout_height="120dp" android:background="#FF000

不过,Android开发人员在过去第一次使用C#和Java

尝试制作一个简单的、类似Windows 8的GUI。目前,我有一个在activity_main.xml中设置了背景颜色的磁贴(ImageButton)

    <ImageButton
    android:id="@+id/btn1"
    android:layout_width="120dp"
    android:layout_height="120dp"
    android:background="#FF0000"
    android:onClick="changeColor"/>
编译很好,但每次我点击红色方块,应用程序就会崩溃

我假设Android是如何开发的,有一些基本的东西我没有注意到,这导致了一个非常明显的错误。有没有比图片按钮更好的方法

谢谢

编译很好,但每次我点击红色方块,应用程序就会崩溃

因为在xml中添加
android:onClick
时,方法必须是公共的,并接受一个视图作为其唯一参数,我们希望在视图单击时调用该参数:

public void changeColor(View view){
   ImageButton btn1 = (ImageButton) findViewById(R.id.btn1);
   btn1.setBackgroundColor(Color.GREEN);
}
编译很好,但每次我点击红色方块,应用程序就会崩溃

因为在xml中添加
android:onClick
时,方法必须是公共的,并接受一个视图作为其唯一参数,我们希望在视图单击时调用该参数:

public void changeColor(View view){
   ImageButton btn1 = (ImageButton) findViewById(R.id.btn1);
   btn1.setBackgroundColor(Color.GREEN);
}

最好创建一个选择器,并将其设置为backgraund到按钮

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="@color/button_pressed" />
    <item android:color="@color/button_normal" />
</selector>

希望对你有帮助。
P.S.有用的

最好创建一个选择器并将其设置为backgraund到按钮

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="@color/button_pressed" />
    <item android:color="@color/button_normal" />
</selector>

希望对你有帮助。
P.S.有用的

有比图像按钮更好的方法吗?
是的,图像按钮主要用于创建“可点击”图像。如果你只是想要一个彩色按钮,一个普通的按钮就可以了

您可以通过使用

这里可以找到一个很好的例子:(一种颜色也可以作为可绘制的颜色)

为什么我当前的代码不工作?
应将视图作为参数添加到方法中,如下所示:

public void changeColor(View view){
   view.setBackgroundColor(Color.GREEN);
}

有没有比使用图像按钮更好的方法 是的,图像按钮主要用于创建“可点击”图像。如果你只是想要一个彩色按钮,一个普通的按钮就可以了

您可以通过使用

这里可以找到一个很好的例子:(一种颜色也可以作为可绘制的颜色)

为什么我当前的代码不工作?
应将视图作为参数添加到方法中,如下所示:

public void changeColor(View view){
   view.setBackgroundColor(Color.GREEN);
}

工作得很好!这究竟指的是什么观点?在我所看到的这个简单的例子中,没有在任何地方创建过一个,也没有在其他任何地方使用过它。@Serephucus:有关更多信息,请参见此处!这究竟指的是什么观点?在这个我能看到的简单示例中,没有在任何地方创建过一个,也没有在其他任何地方使用过。@Serephucus:请参见此处了解更多信息我应该提到的是,我将在稍后向按钮添加图像-具有透明背景-我只是想让颜色更改生效,更重要的是要确保我在安卓系统上的操控性。好吧,不管怎样,可绘制的状态列表背景也适用于ImageButtons,所以如果您喜欢完整的XML解决方案,这将非常有效。实际上,我会的。我在键入时执行此操作。:)我应该提到的是,我将在稍后向按钮添加图像-使用透明背景-我只是想让颜色变化正常工作,更重要的是确保我在Android上有一个手柄。好吧,无论如何,可绘制状态列表背景也适用于ImageButtons,所以,如果您喜欢一个完整的XML解决方案,这将是可行的。我在键入时执行此操作。:)