2015-07-03 49 views
0

我在線性佈局中使用樣式來創建帶文本的可點擊的圓圈 - 代表一週中的某一天。雖然點擊功能無法正常工作,但我正在將形狀設計得很好。可點擊的圓和線性佈局中的文本?

這裏是我的線性佈局

<LinearLayout 
     android:layout_height="40dp" 
     android:layout_width="40dp" 
     android:layout_weight="1" 
     android:gravity="center" 
     android:clickable="true" 
     android:focusable="true" 
     style="@style/circleButton_style" 

     android:saveEnabled="true" 
     android:orientation="vertical"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="#FFFFFF" 
      android:textSize="10sp" 
      android:textStyle="bold" 
      android:singleLine="true" 
      android:text="S"/> 

    </LinearLayout> 

風格

<style name="circleButton_style" parent="AppTheme"> 
    <item name="android:background">@drawable/circle_stand_sel</item> 
    <item name="android:textColor">#FFFFFF</item> 
    <item name="android:minHeight">48dp</item> 
    <item name="android:paddingLeft">5dp</item> 
    <item name="android:paddingRight">5dp</item> 
</style> 

而且我繪製

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

<!-- initial state state --> 
<item android:drawable="@drawable/circle" android:state_first="false" /> 

<!-- disabled state --> 
<item android:drawable="@drawable/circle" android:state_enabled="false"/> 

<!-- enabled and pressed state --> 
<item android:drawable="@drawable/circle_pressed" android:state_enabled="true" android:state_pressed="true"/> 

<!-- enabled and focused state --> 
<item android:drawable="@drawable/circle_pressed" android:state_enabled="true" android:state_focused="true"/> 

<!-- enabled state --> 
<item android:drawable="@drawable/circle_pressed" android:state_enabled="true"/> 

它根本沒有移動circle_pressed狀態,我不知道爲什麼......任何人都可以幫忙?

+0

您是否有意在drawable xml上留下了一些代碼,或者是該文件的內容?即關閉選擇器標籤等。 – Broak

+0

是啊,我的壞。代碼的功能,雖然它只是給我展示了「圈子」可繪製,並且不允許任何點擊功能 –

+0

噢好的很酷,你有沒有嘗試添加clickable到textview呢?我在這裏看不到任何明顯的錯誤! – Broak

回答

0

state_first,state_middlestate_last用於爲某個ViewGroups中的第一個,中間或最後一個項目創建不同的樣式。沒有太多的文檔,所以我不知道他們在哪裏使用。

按順序評估選擇器中的每個項目,並應用匹配的第一個項目。所以,基本上,你的第一個項目總是匹配。您的默認狀態應該是列表中的最後一項:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/circle_pressed" 
      android:state_pressed="true"/> 
    <item android:drawable="@drawable/circle_pressed" 
      android:state_focused="true"/> 
    <item android:drawable="@drawable/circle"/> 
</selector> 
+0

我猜這些選擇器默認情況下不支持任何組件:https://sriramramani.wordpress.com/2014/03/13/pseudo-selectors/ – tachyonflux

+0

有了你提供的這個代碼,我可以容納這些圓圈,它們的顏色,雖然他們不會改變點擊@karaokyo –

+0

我想我可以通過設置一個onClick方法來設置onEnabled –