我有一个ToggleButton,当你点击它时,我不想让状态改变。当我收到来自按钮切换的反馈后,我会自己处理状态更改。我怎样才能防止点击状态变化?防止ToggleButton开关状态
4
A
回答
0
虽然我认为你可以将它标记为禁用,但我不认为这是一个好主意,因为用户习惯于这种按钮的某种语义。
如果您只想显示某种状态,为什么不使用ImageView并根据状态显示不同的图像?
4
您可以实施自己的ToggleButton
,并使用空体覆盖toggle()
方法。
1
您可以简单地使用CheckedTextView代替。
当然,您需要根据状态设置背景图像和文本,但除了那些(您可能已经使用过)以外,这是一个很好的替代解决方案。
这里的情况下,示例代码你错过了纹元和textOff属性:
CheckableTextView.java:
public class CheckableTextView extends CheckedTextView {
private CharSequence mTextOn, mTextOff;
public CheckableTextView (final Context context, final AttributeSet attrs, final int defStyle) {
super(context, attrs, defStyle);
final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CheckableTextView, defStyle, 0);
mTextOn = a.getString(R.styleable.CheckableTextView_textOn);
mTextOff = a.getString(R.styleable.CheckableTextView_textOff);
a.recycle();
}
public CheckableTextView(final Context context, final AttributeSet attrs) {
this(context, attrs, 0);
}
public CheckableTextView(final Context context) {
this(context, null, 0);
}
@Override
public void setChecked(final boolean checked) {
super.setChecked(checked);
if (mTextOn == null && mTextOff == null)
return;
if (checked)
super.setText(mTextOn);
else
super.setText(mTextOff);
}
public void setTextOff(final CharSequence textOff) {
this.mTextOff = textOff;
}
public void setTextOn(final CharSequence textOn) {
this.mTextOn = textOn;
}
public CharSequence getTextOff() {
return this.mTextOff;
}
public CharSequence getTextOn() {
return this.mTextOn;
}
}
在res /价值/ attr.xml
:
<declare-styleable name="SyncMeCheckableTextView">
<attr name="textOn" format="reference|string" />
<attr name="textOff" format="reference|string" />
</declare-styleable>
另一可能的解决方案是在ToggleButton上使用setClickable(false),并在动作动作为ACTION_UP时处理onTouchListener。
相关问题
- 1. 延迟开关状态在togglebutton点击
- 2. togglebutton记住状态
- 3. 防止状态耦合?
- 4. Android防止保存状态
- 5. Silverlight Togglebutton Set IsPressed状态
- 6. 防止Flyout动态打开
- 7. 防止悬停在活动状态
- 8. UI-Router:防止访问父状态
- 9. 防止Firefox页面状态缓存
- 10. 防止保存状态悬停在fabricjs
- 11. SQL:从状态显示防止数据
- 12. 防止UISwitch改变UI状态
- 13. 如何防止UISwitch改变状态?
- 14. 更改状态时防止状态重新加载ui-router
- 15. 如何检查ToggleButton的启动状态
- 16. 蓝牙ToggleButton没有检查状态
- 17. 开关HTTP状态代码
- 18. 更改Android开关状态
- 19. 自举开关状态
- 20. ToggleButton形状不变
- 21. 防止开在Firefox
- 22. 如何动态更新Dialog中的ToggleButton状态?
- 23. 在三态ToggleButton上更改状态序列
- 24. CDockablePane防止关闭
- 25. 防止Windows关机
- 26. 防止从关闭
- 27. 防止PrettyPhoto关闭
- 28. 如何防止Web Socket在iPhone/iPad进入锁定状态时断开连接?
- 29. WPF:如何防止CheckBox.Checked事件被ComboBox作为ToggleButton触发?
- 30. 如何防止ToggleButton未设置IsEnabled而被切换
我用tgl.setChecked(!tgl.isChecked());在我的onClick监听器中。 (tgl os ToggleButton视图) – 2016-03-02 19:54:23