0

我试图在单击按钮时更新按钮的图像,但是我在我的 XML 文件中使用的方法似乎并没有创建所需的效果(或者根本没有任何效果)。

XML 片段:

  <Button
      android:id="@+id/update_button"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_below="@+id/update_text"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="90dp"
      android:background="@drawable/btn_update_inactive_hdpi" 
      android:onClick="@drawable/btn_update_active_hdpi"/>
4

3 回答 3

3

为了在单击按钮时更改按钮的背景,您需要给它一个选择器。

btn_selector.xml

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

在您的布局中:

<Button
     android:id="@+id/update_button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_below="@+id/update_text"
     android:layout_centerHorizontal="true"
     android:layout_marginTop="90dp"
     android:background="@drawable/btn_selector"/>
于 2013-07-25T20:00:44.647 回答
1

android:onClick调用一个方法。根据文档:

android:onClick

Name of the method in this View's context to invoke when the view is clicked. This name must correspond to a public method that takes exactly one parameter of type View. For instance, if you specify android:onClick="sayHello", you must declare a public void sayHello(View v) method of your context (typically, your Activity).

因此,请尝试在单击按钮时和在您的 Java 代码中调用一个函数,并在该函数内以编程方式更改可绘制对象。就像是:

在 xml 文件中:

android:onClick="changeBackground"

在您的代码(设置此 xml 文件视图的活动)中,声明以下函数:

public void changeBackground(){
    Button button = (Button)findViewById(R.id.update_button);
    button .setBackgroundResource(R.drawable.btn_update_active_hdpi); 
}

PS:我还没有运行代码,但我希望你能明白我想说什么。希望有帮助

于 2013-07-25T19:48:02.597 回答
0

您可以只使用选择器来完成此操作。在您的可绘制文件夹中创建一个新的 XML,并将其命名为“btn_background.xml”,并添加以下内容:

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

  <item android:drawable="@drawable/btn_update_active_hdpi" android:state_selected="true"></item>
  <item android:drawable="@drawable/btn_update_active_hdpi" android:state_pressed="true"></item>
  <item android:drawable="@drawable/btn_update_inactive_hdpi"></item>

</selector>

然后设置按钮的背景

android:background="@drawable/btn_background"

onClick 属性用于将 Activity 的 java 方法中的方法分配给按钮。(这基本上就像做 button.setOnClickListener()。)如果你想设置一个 onClick 监听器,那么你可以执行以下操作:

在 XML 中

android:onClick="NameOfMethod"

在 Java 活动中

public void NameOfMethod(View v){
  //Do Click Stuff Here
}
于 2013-07-25T20:00:04.927 回答