点击/聚焦时如何更改button的背景图像?
点击或聚焦时,我想更改button的背景图像。
这是我的代码:
Button tiny = (Button)findViewById(R.id.tiny); tiny.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Button tiny = (Button)findViewById(R.id.tiny); tiny.setBackgroundResource(R.drawable.a9p_09_11_00754); TextView txt = (TextView)findViewById(R.id.txt); txt.setText("!---- On click ----!"); } });
这个代码是对的吗? 它是否在其事件上调用button?
你可以在这个XML文件中实现这个,如下所示:
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="true" android:drawable="@drawable/your_imagename_while_focused"/> <item android:state_pressed="true" android:drawable="@drawable/your_imagename_while_pressed" /> <item android:drawable="@drawable/image_name_while_notpressed" /> //means normal </selector>
现在将这个xml文件保存在可绘制的文件夹中,并将其命名为abc.xml并将其设置如下
Button tiny = (Button)findViewById(R.id.tiny); tiny.setBackgroundResource(R.drawable.abc);
希望它会帮助你。 🙂
它很容易实现。 为此,你需要创build一个XML文件(select器文件),并将其放置在res的可绘制文件夹中。 之后,在布局文件的button背景中设置xml文件。
button_background_selector.xml
<?xml version="1.0" encoding="UTF-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/your_hover_image" /> <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/your_hover_image" /> <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/your_hover_image"/> <item android:drawable="@drawable/your_simple_image" /> </selector>
现在将上述文件设置在button的背景中。
<Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/grey_text" android:background="@drawable/button_background_selector"/>
对不起,这是错误的。
要根据特定的事件(焦点,按下,正常)来更改背景颜色/图像,您需要定义一个buttonselect器文件并将其作为button的背景来实现。
例如: button_selector.xml(在drawable文件夹中定义这个文件)
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:color="#000000" /> <!-- pressed --> <item android:state_focused="true" android:color="#000000" /> <!-- focused --> <item android:color="#FFFFFF" /> <!-- default --> </selector> <!-- IF you want image instead of color then write android:drawable="@drawable/your_image" inside the <item> tag -->
并将其应用为:
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawable="@drawable/button_selector.xml" />
使用此代码在可绘制的文件夹名称中创buildxml文件:button
<?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/buutton_pressed" /> <item android:drawable="@drawable/button_image" /> </selector>
并在button的XML文件
android:background="@drawable/button"
要改变button的背景,我们可以按照2种方法
-
在OnClickbutton中,只需添加以下代码:
public void onClick(View v) { if(v == buttonName) { buttonName.setBackgroundDrawable (getResources().getDrawable(R.drawable.imageName_selected)); } }
2.在drawable文件夹中创buildbutton_background.xml(使用xml)
res – > drawable – > button_background.xml
<?xml version="1.0" encoding="UTF-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true" android:drawable="@drawable/tabs_selected" /> <!-- selected--> <item android:state_pressed="true" android:drawable="@drawable/tabs_selected" /> <!-- pressed--> <item android:drawable="@drawable/tabs_selected"/> </selector>
现在在button的背景文件中设置上述文件。
<Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/button_background"/> (or) Button tiny = (Button)findViewById(R.id.tiny); tiny.setBackgroundResource(R.drawable.abc);
第二种方法更适合设置背景fdbutton
您只需要设置背景并在布局文件中的button背景中inputprevious.xml文件即可。
<Button android:id="@+id/button1" android:background="@drawable/previous" android:layout_width="200dp" android:layout_height="126dp" android:text="Hello" />
并完成。编辑以下是可绘制目录中的previous.xml文件
<?xml version="1.0" encoding="utf-8"?>
<item android:drawable="@drawable/onclick" android:state_selected="true"></item> <item android:drawable="@drawable/onclick" android:state_pressed="true"></item> <item android:drawable="@drawable/normal"></item>