我希望我的Android按钮有一些属性:
所以我的代码目前看起来像这样:
我的xml文件:
<ImageButton
android:id="@+id/button"
style="@android:style/Widget.Holo.Light.Button.Toggle"
android:layout_width="70px"
android:layout_height="70px"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_margin="5dp"
android:src="@drawable/icon" />
我的java文件:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_file);
Button button = (ImageButton) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.v(log, "button pressed");
if (skillsButton.isSelected()) {
Log.v(log, "button is unselected");
button.setSelected(false);
} else {
Log.v(log, "button is selected");
button.setSelected(true);
}
}
});
}
当我运行我的代码并单击按钮时,我可以看到我的按钮有一个图像作为其描述,看起来像一个Android HoloLight ToggleButton,但它没有打开和关闭,因为我按下它(蓝色的光没有开启。)
我可以看到按钮的isSelected()状态在LogCat上正在改变。
是否有我想要的解决方案?
另外,据我所知,Android HoloLight主题按钮的“颜色”固定为浅灰色。有没有办法将这种颜色改为另一种颜色,最好是白色?
答案 0 :(得分:0)
这就是我所做的,所以我可以有2个或3个Buttons
图片切换并位于RadioGroup
中,因此一次只能选择一个。
将其设为ToggleButton
<ToggleButton
android:id="@+id/button"
style="@android:style/CustomButton // Note the style
android:layout_width="70px"
android:layout_height="70px"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_margin="5dp" />
在res/styles
<style name="CustomButton" parent="@android:style/Widget.CompoundButton"> // you can change the parent here depending on what you need
<item name="android:background">@drawable/icon</item>
<item name="android:textOff"></item>
<item name="android:textOn"></item>
// add other properties if you need
</style>
在我的@drawable/cold_button
引用了一个选择器,因为它在按下时会发生变化,但您可以只是background
的图像
答案 1 :(得分:0)
我的建议是为您的按钮提供拖车。一对一状态和一个关闭状态,“开”状态可绘制具有右侧蓝色和“关闭”状态按钮具有左侧蓝色。之后,您必须在按钮上设置OnTouchListener,如下所示:
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_DOWN){
float x=event.getX();
if(x<=v.getWidth()/2){
v.setBackgroundResource(R.drawable.off);
state=0;
}else{
v.setBackgroundResource(R.drawable.on);
state=1;
}
}
return false;
}