即使是內置的雙狀態切換按鈕也需要一個onClick方法來處理點擊事件,因此我認爲在onClick方法中處理視覺切換的常規按鈕並不複雜它自己的。
由於您想要使用圖像的選項,我將使用ImageButton作爲示例。
的XML具有自定義顏色的ImageButton的:
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/toggleButton"
android:layout_marginTop="152dp"
android:layout_centerHorizontal="true"
android:src="@drawable/state0"
android:onClick="onToggleClick"
android:background="@color/red"/>
顏色的資產應該在一個新的XML值文件中定義(見http://developer.android.com/guide/topics/resources/more-resources.html#Color)
的onclick方法來處理切換的視覺效果按鈕看起來像這樣在我建立我自己的例子:
public void onToggleClick(View view){
toggleState = (toggleState+1)%3;
switch(toggleState){
case 0:
toggleButton.setImageResource(R.drawable.state0);
toggleButton.setBackgroundColor(0xffff0000);
break;
case 1:
toggleButton.setImageResource(R.drawable.state1);
toggleButton.setBackgroundColor(0xff00ffff);
break;
case 2:
toggleButton.setImageResource(R.drawable.state2);
toggleButton.setBackgroundColor(0xffff00ff);
break;
}
}
請不要硬編碼的顏色爲十六進制值,使變量對他們來說,在你最後的項目中。
僅供參考十六進制顏色是0xAARRGGBB
形式
要評論:
如果您想配對的文本和在同一按鈕上的Android圖像支持XML格式。它看起來像這樣有一個圖標按鈕的左邊:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_text"
android:drawableLeft="@drawable/button_icon"
... />
source: http://developer.android.com/guide/topics/ui/controls/button.html
但你將無法將圖像與ImageButton的類的方法進行切換。
感謝cam9。 ImageButton是我正在考慮的一個選項。我唯一擔心的是我還需要在圖像上方或下方的某個位置重疊文本。我當然不想將文本刻錄到圖像中,以便我可以將文本字符串國際化。有推薦的方式來覆蓋文字嗎? FrameLayout裏? – 2014-10-10 20:23:36
您也可以在按鈕上放置文字。請參閱編輯 – camlunt 2014-10-10 21:07:56
您能否解釋爲什麼該方法無法切換圖像?您對使用FrameLayout覆蓋文本有什麼看法? – 2014-10-10 22:55:12