天天看點

關于selector和shape的簡單例子

剛才想自定義一個彩票的球,于是想通過textView來搞定,不過發現textView隻能點選切換顔色,而不能像CheckBox那樣有選中狀态。是以想到設定textView的setSelected()屬性來做。

下面放上一些代碼

</pre><p>1.定義的背景的狀态選擇器</p><p><pre name="code" class="java"><?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

  
    <item android:state_selected="true">
        <shape android:shape="oval" android:useLevel="false">
            <solid android:color="#ff0000" />

            <stroke android:width="2dp" />
        </shape></item>
    <item android:state_selected="false"><shape android:shape="oval" android:useLevel="false">
            <solid android:color="#fff" />

            <stroke android:width="2dp" />
             />
</shape></item>

</selector>
           

2.定義的文字顔色變化的選擇器

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_focused="true" android:color="#FFFfff"/>
    <item android:state_selected="true" android:color="#FFFfff"></item>
    <item android:state_pressed="true" android:color="#FFFfff"></item>
    <item android:color="#FF0000"></item>

</selector>
           

3.在xml檔案中使用

<com.example.timer_shaft.ViewBall
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:background="@drawable/bg_ball_selector"
        android:gravity="center"
        android:text="55"
        android:textColor="@drawable/text_ball_selector" />
           

4.我是自己定義的TextView因為不想再每個地方都通過點選事件來設定textView的選中狀态,這麼寫報警告了,還沒了解為啥,有知道朋友的求教育

@Override
	public boolean onTouchEvent(MotionEvent event) {
		switch (event.getAction()) {
		case MotionEvent.ACTION_DOWN:
			this.setSelected(!this.isSelected());
			break;
		}
		return super.onTouchEvent(event);
	}
           

這樣基本就完成了一個彩票的球的效果了

繼續閱讀