str*_*rem 10 android state button
昨天我注意到可以通过兼容性软件包将Fragments集成到较旧的API级别中,但这对于这个问题并不是很重要.:)
我有一个带有OnClickListener的Button
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
doSomething();
button.setPressed(true);
}
});
Run Code Online (Sandbox Code Playgroud)
由于实际点击,它显示为按下,并且在释放点击后,按钮状态未被按下并保持这种状态.
是否有一种简单的方法可以在释放后按下按钮状态?我能想到的第一件事就是某种计时器,但这似乎是不合理的.
Mar*_*kes 25
请注意这是因为Android正在改变setPressed你之前和之后的两者onClickEvent,所以自己改变它没有任何效果.解决这个问题的另一种方法是使用onTouchEvent.
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// show interest in events resulting from ACTION_DOWN
if (event.getAction() == MotionEvent.ACTION_DOWN) return true;
// don't handle event unless its ACTION_UP so "doSomething()" only runs once.
if (event.getAction() != MotionEvent.ACTION_UP) return false;
doSomething();
button.setPressed(true);
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
小智 13
用ToggleButton而不是Button.
<ToggleButton
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/topping_selector"
android:checked="false"
android:textOff="Topping2"
android:textOn="Topping2" />
Run Code Online (Sandbox Code Playgroud)
topping_selector.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true"
android:drawable="@drawable/btn_topping_on" />
<item android:state_checked="false"
android:drawable="@drawable/btn_topping_off" />
</selector>
Run Code Online (Sandbox Code Playgroud)
您可以将按钮状态保存在可绘制文件夹下的xml文件中,然后用作按钮的背景.例如:
android:background="@drawable/buttonstate"
Run Code Online (Sandbox Code Playgroud)
buttonstate.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/back_focused" />
<item android:drawable="@drawable/back" /> <!-- default -->
</selector>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32131 次 |
| 最近记录: |