我正在使用ImageButton
。但點擊時我不明白。我GOOGLE了,許多人建議使用選擇器在其他圖像顯示。有沒有辦法解決。通過只使用一個圖像並突出顯示或給它發光效果。以便用戶知道該按鈕已被點擊。Android單擊時突出顯示一個圖像按鈕
回答
這其實並不是很難做到。你甚至不需要創建2個獨立的.png文件或類似的東西。舉例來說,如果你想擁有它有一個梯度的按鈕,然後更改它,當按下按鈕:
第1步: 創建默認按鈕梯度(繪製/ default_button.xml):
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="3dp" />
<gradient android:endColor="#8ba0bb" android:startColor="#43708f" android:angle="90" />
<stroke android:width="1dp" android:color="#33364252" />
</shape>
步驟2:創建默認按鈕被按下梯度(可拉伸/ default_button_pressed.xml):
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="3dp" />
<gradient android:endColor="#43708f" android:startColor="#8ba0bb" android:angle="90" />
<stroke android:width="1dp" android:color="#33364252" />
</shape>
步驟3:創建選擇器(繪製/ default_button_selector.xml):
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" android:drawable="@drawable/default_button_pressed" />
<item android:drawable="@drawable/default_button" />
</selector>
步驟4 (可選):爲按鈕創建風格(值/ style.xml):
<resources>
<style name="DefaultButton">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:background">@drawable/default_button_selector</item>
</style>
</resources>
步驟5:使用按鈕(佈局/ main.xml中):
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<button style="@style/DefaultButton" />
</RelativeLayout>
正如你所看到的,這並不是特別困難。
lol @Zack'正如你所見,做起來並不難。' – 2011-03-16 15:48:33
這很好,因爲你可以使用相同的風格輕鬆添加一些按鈕。 – 2011-03-16 16:17:09
如果我們需要具有不同背景圖像的按鈕,該怎麼辦? – Kishore 2012-08-21 09:25:51
爲了不必爲每個按鈕設置多個drawable,我在觸摸監聽器中設置了圖像按鈕的顏色過濾器屬性。
見代碼在這裏在另一篇文章:
+1這個固體解決方案。 – 2013-05-04 05:55:59
,而無需創建多個圖像(壓,正常等),甚至不必創建選擇。使用setOnTouchListener而不是setOnClickListener。下面的代碼會給你點擊項目上的灰色覆蓋。
((ImageButton)findViewById(R.id.myImageBtn)).setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
ImageButton view = (ImageButton) v;
view.getBackground().setColorFilter(0x77000000, PorterDuff.Mode.SRC_ATOP);
v.invalidate();
break;
}
case MotionEvent.ACTION_UP:
// Your action here on button click
case MotionEvent.ACTION_CANCEL: {
ImageButton view = (ImageButton) v;
view.getBackground().clearColorFilter();
view.invalidate();
break;
}
}
return true;
}
});
這對我有用。請務必清除ACTION_UP上的顏色過濾器。 – 2014-06-06 15:36:27
我的ADT不知道'PorterDuff'是什麼,所以後綴'android.graphics'(android.graphics.PorterDuff.Mode.SRC_ATOP)暗示代碼完成 – 1owk3y 2014-12-01 22:48:02
幫了我很多,謝謝! – 2015-06-12 08:47:37
我設法做到了這一點! 首先在可繪製文件夾中聲明buttonStyle.xml。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="true"
android:state_pressed="true"
android:drawable="@drawable/button_pressed" />
<item
android:state_focused="false"
android:state_pressed="true"
android:drawable="@drawable/button_pressed" />
<item android:drawable="@drawable/button_normal" />
</selector>
然後創建button_pressed.xml在繪製文件夾中。
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="@color/semiTransparentGnfrBlueColor" />
<stroke android:width="10dp" android:color="@android:color/transparent" />
</shape>
之後,你創建button_normal.xml在繪製文件夾中。
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:innerRadiusRatio="3"
android:shape="rectangle">
<solid android:color="@color/gnfrBlueColor"/>
<stroke android:width="10dp" android:color="@android:color/transparent" />
</shape>
您可以使用默認的顏色,但如果你想做到這一點跟我一樣,你需要有一個名爲顏色的文件。XML價值觀文件夾,這個數值內:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="gnfrBlueColor" type="color">#2A3748</item>
<item name="semiTransparentGnfrBlueColor" type="color">#602A3748</item>
<integer-array name="androidcolors">
<item>@color/gnfrBlueColor</item>
<item>@color/semiTransparentGnfrBlueColor</item>
</integer-array>
</resources>
最後將它設置爲您的按鈕或什麼:
savedAccountLoginButton.SetBackgroundResource(Resource.Drawable.buttonStyle);
注意到我設置筆畫顏色透明因爲當你設置backgroundresource您的按鈕變得更大,並與此伎倆它仍然是原創。
這是我可以通過程序實現的唯一方法。
如果您想通過XML做到這一點:
<Button
android:text="ENTRAR"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@drawable/buttonstyle"
android:textColor="@color/white"
android:textSize="18sp"
android:id="@+id/button1" />
- 1. 單擊按鈕時突出顯示僅圖像
- 2. Android:圖像按鈕或按鈕突出顯示效果時按
- 3. 單擊按鈕時顯示圖像
- 4. 單擊按鈕時不顯示圖像
- 5. 單擊後突出顯示的按鈕
- 6. 單擊下一個按鈕時如何逐個顯示圖像?
- 7. 單擊時突出顯示圖像,然後選中單選按鈕
- 8. 單擊按鈕上的Android圖像按鈕顯示
- 9. 單擊單選按鈕時如何突出顯示標籤?
- 10. 單擊時讓單選按鈕保持突出顯示
- 11. 如何在按下按鈕時突出顯示一個按鈕
- 12. 突出顯示按鈕一次一個
- 13. 如何在按下時突出顯示圖像按鈕
- 14. 在按鈕上單擊顯示圖像
- 15. 單擊按鈕時突出顯示藍色jquery mobile
- 16. 單擊時突出顯示一行
- 17. 在圖像按鈕上點擊顯示溢出菜單點擊
- 18. 點擊按鈕時顯示圖像?
- 19. Android按鈕==>設置突出顯示的圖像?
- 20. 單擊按鈕時出現圖像
- 21. Android中的下一個/上一個按鈕單擊時顯示完整圖片
- 22. 單擊按鈕時無法顯示下一個活動[Android]
- 23. 單擊另一個按鈕時顯示按鈕
- 24. 點擊下一個按鈕時顯示圖像
- 25. Javascript:單擊單選按鈕時的顯示圖像
- 26. Android AndEngine按鈕仍然突出顯示
- 27. 如何在單擊下一個按鈕時逐個顯示圖像?
- 28. 如何突出顯示菜單按鈕?
- 29. 突出顯示與CSS單選按鈕
- 30. 製作菜單按鈕突出顯示
你可以告訴你使用的是創建圖像按鈕的代碼? – Cristian 2011-03-16 15:27:54