我试图在单击时更改文本视图的背景。
例如,如果单击文本视图,则背景变为黄色并保持黄色,直到再次单击。然后它返回到其默认背景。
目前,textview 按下时背景会发生变化,但在释放时会恢复为默认值。
我已经在互联网上搜索解决方案,并查看了 stackoverflow 上的所有解决方案,但仍然没有解决方案。
可绘制/选择器.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/circle_on" android:state_enabled="true" android:state_pressed="true"/>
<item android:drawable="@drawable/circle_on" android:state_enabled="true" android:state_focused="true"/>
<item android:drawable="@drawable/circle_off"/>
</selector>
可绘制/circle_on:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<stroke
android:width="2dp"
android:color="@color/Gray" >
</stroke>
<solid android:color="@color/LightBlue" />
</shape>
可绘制/circle_off:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<stroke
android:width="2dp"
android:color="@color/Gray" >
</stroke>
<solid android:color="@color/WhiteSmoke" />
</shape>
文本视图:
<TextView
style="@style/RoundText"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@drawable/repeat_selector"
android:clickable="true"
android:text="Sun" >
</TextView>
文字样式:
<style name="RoundText">
<item name="android:textColor">#555555</item>
<item name="android:gravity">center_vertical|center_horizontal</item>
<item name="android:textSize">15sp</item>
<item name="android:textStyle">bold</item>
<item name="android:fontFamily">sans-serif-thin</item>
</style>
有人可以告诉我我做错了什么
谢谢。
我的解决方案:
public class PlanTextView extends TextView {
private boolean _stateChanged;
private boolean _selected;
public boolean is_stateChanged() {
return _stateChanged;
}
public void set_stateChanged(boolean _stateChanged) {
this._stateChanged = _stateChanged;
}
public boolean is_selected() {
return _selected;
}
public void set_selected(boolean _selected) {
this._selected = _selected;
}
public PlanTextView(Context context) {
super(context);
}
public PlanTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public PlanTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
}
<com.plan.views.PlanTextView
android:id="@+id/mon"
style="@style/RoundText"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@drawable/circle_off"
android:clickable="true"
android:onClick="PlanOnClick"
android:text="mon" >
</com.plan.views.PlanTextView>
活动
public void PlanOnClick(View v) {
PlanTextView view = (PlanTextView)v;
if (view.is_stateChanged()) {
view.setBackgroundResource(R.drawable.circle_off);
view.set_selected(false);
} else {
view.setBackgroundResource(R.drawable.circle_on);
view.set_selected(true);
}
view.set_stateChanged(!view.is_stateChanged());
}