I am trying to change the textview background when clicked.
For example, if you click a text box, the background changes to yellow and remains yellow until it clicks again. Then it returns to the original background.
There is currently a text change in the background changes when clicked, but the default is reset.
I have an Internet search for solutions and look most at stackoverflow solution, but still no solution.
Drawable / selector.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>
Drawable / 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>
Drawable / 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:
<TextView style="@style/RoundText" android:layout_width="50dp" android:layout_height="50dp" android:background="@drawable/repeat_selector" android:clickable="true" android:text="Sun" > </TextView>
Text Style:
<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>
Can someone please tell me what I'm doing wrong.
Thanks.
My decision:
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>
activity
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()); }