2016-01-28 189 views
0

爲什麼Button的默認行爲state_activated =「false」?Android按鈕默認狀態

使用這個選擇它永遠不會到達最後一排,它停留在第二行:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@color/colorPrimary" android:state_enabled="false"/> 
<item android:drawable="@color/colorPrimaryDark" android:state_activated="false"/> 
<item android:drawable="@color/colorAccent"/> 

比方說,這個選擇器之間的按鈕和某些佈局其僞裝成一個按鈕共享,但在佈局的情況下,需要setActivated(false)來更改背景。

+0

我想不出一個Button會被「激活」的情況。也許你可以列出按鈕需要有不同視覺外觀的不同情況,我們可以從那裏開始。 – ataulm

+0

我有一個按鈕構成的佈局,並且在某個點它變爲「非活動」,但仍然可以點擊並啓用,以便顯示禁用並在點擊時顯示警告消息。當佈局的點擊選項被禁用時,點擊動作將不會被註冊,所以我必須使用setActivated()。在其他一些佈局中,某些按鈕也使用相同的選擇器,但它們只需響應state_pressed,就像普通按鈕一樣,但它們會響應state_activated。感謝你,現在我知道爲什麼,但仍然不知道如何修改/繞過它而不使用另一個選擇器。 – rexxar

+0

我不明白你的意思是「'不活躍',但仍然可以點擊」。你可以使用'setEnabled(false)',因爲這是View上的方法,而不是Button。禁用的按鈕的默認行爲是禁用點擊(即無按下狀態)。 – ataulm

回答

0

activated默認狀態是所有視圖假的。理解爲什麼的最簡單方法是考慮在ViewPager上製表符的情況。

activated選項卡是代表可見頁面的選項卡 - 同時激活多個選項卡沒有意義。

我在我的blog post中提到activated可能被描述爲「不知道Android使用的術語」的人。

+0

感謝您的回覆,這很有幫助,現在我完全明白這兩種狀態之間的區別。 不過,我無法弄清楚在選擇器中放置了什麼可以解決我的問題。 我想我將不得不添加第二個選擇器,因爲這兩個視圖的默認狀態值是相等的,但最初的反應是不同的。 (我是一個在你的博客上發表評論的人(如果那不會使你在這裏)。) – rexxar

0

您需要爲激活和啓用狀態添加顏色。 像這樣:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@color/colorPrimary" android:state_enabled="false"/> 
    <item android:drawable="@color/some_color" android:state_enabled="true"/> 
    <item android:drawable="@color/colorPrimaryDark" android:state_activated="false"/> 
    <item android:drawable="@color/some_color" android:state_activated="true"/> 
    <item android:drawable="@color/colorAccent"/> 
+0

我試過了,但問題仍然存在,佈局和按鈕的反應不同,因爲它們的初始狀態爲 – rexxar