我想在点击或聚焦时更改按钮的背景图像。
这是我的代码:
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 ----!");
}
});
这段代码对吗?它会在事件中调用一个按钮吗?
答案 0 :(得分:91)
你可以在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文件保存在drawable文件夹中,并将其命名为suppc abc.xml并将其设置如下
Button tiny = (Button)findViewById(R.id.tiny);
tiny.setBackgroundResource(R.drawable.abc);
希望它会对你有所帮助。 :)
答案 1 :(得分:56)
它很容易实现。为此,您需要创建一个xml文件(选择器文件)并将其放在res中的drawable文件夹中。之后,在布局文件的按钮背景中设置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
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/grey_text"
android:background="@drawable/button_background_selector"/>
答案 2 :(得分:8)
抱歉这是错误的。
要根据特定事件(焦点,按,普通)更改背景颜色/图像,您需要定义一个按钮选择器文件并将其作为按钮的背景实现。
例如: 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" />
答案 3 :(得分:5)
使用此代码 在可绘制文件夹名称中创建xml文件:按钮
<?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>
并在按钮xml文件中
android:background="@drawable/button"
答案 4 :(得分:3)
要更改按钮背景,我们可以使用2种方法
在OnClick按钮中,只需添加以下代码:
public void onClick(View v) {
if(v == buttonName) {
buttonName.setBackgroundDrawable
(getResources().getDrawable(R.drawable.imageName_selected));
}
}
2.在drawable文件夹中创建button_background.xml。(使用xml)
res - &gt; drawable - &gt; 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
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);
第二种方法更适合设置背景fd按钮
答案 5 :(得分:2)
您只需设置背景并在布局文件中的按钮背景中提供previous.xml文件。
<Button
android:id="@+id/button1"
android:background="@drawable/previous"
android:layout_width="200dp"
android:layout_height="126dp"
android:text="Hello" />
和done.Edit以下是drawable目录中的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>
答案 6 :(得分:0)
如果要向视图中添加更多详细信息,也可以直接在item
标签内创建形状,例如:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape>
<solid android:color="#81ba73" />
<corners android:radius="6dp" />
</shape>
<ripple android:color="#c62828"/>
</item>
<item android:state_enabled="false">
<shape>
<solid android:color="#788e73" />
<corners android:radius="6dp" />
</shape>
</item>
<item>
<shape>
<solid android:color="#add8a3" />
<corners android:radius="6dp" />
</shape>
</item>
</selector>
请注意,Android将从顶部到底部循环显示所有项目,因此,您必须将item
无条件地放置在列表的底部(因此,它的作用类似于默认/后备)。
答案 7 :(得分:0)
for (Question q : questions) {
if (q == null) {
continue; // ignore nulls
}
HashMap<String, Response> thisResponse = new HashMap<>();
listOfResponses.add(thisResponse);
// populate thisResponse
}
<?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/pause" />
<item android:state_selected="false"
android:drawable="@drawable/play" />
<!-- default -->
</selector>
<ImageView
android:id="@+id/iv_play"
android:layout_width="@dimen/_50sdp"
android:layout_height="@dimen/_50sdp"
android:layout_centerInParent="true"
android:layout_centerHorizontal="true"
android:background="@drawable/pause_button"
android:gravity="center"
android:scaleType="fitXY" />
并添加
iv_play = (ImageView) findViewById(R.id.iv_play);
iv_play.setSelected(false);