我想在應用中放置一顆星形按鈕,就像評分明星一樣。我已經嘗試使用一個星級評分欄,但不幸的是它不能用作按鈕。Android中的星形按鈕
我喜歡它作爲一個按鈕,甚至更好,如果所選狀態的背景是黃色的......任何建議?謝謝。
我想在應用中放置一顆星形按鈕,就像評分明星一樣。我已經嘗試使用一個星級評分欄,但不幸的是它不能用作按鈕。Android中的星形按鈕
我喜歡它作爲一個按鈕,甚至更好,如果所選狀態的背景是黃色的......任何建議?謝謝。
當然,使用佈局資源這樣的:
<ImageButton android:id="@+id/favorite"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:src="@drawable/star"
android:background="#00ffffff"
android:onClick="onToggleStar"/>
您可以在res/drawable/star.xml
像這樣被保存爲XML文件中定義的狀態列表繪製配對的:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/button_pressed" /> <!-- pressed -->
<item android:state_focused="true"
android:drawable="@drawable/button_focused" /> <!-- focused -->
<item android:state_hovered="true"
android:drawable="@drawable/button_focused" /> <!-- hovered -->
<item android:drawable="@drawable/button_normal" /> <!-- default -->
</selector>
這裏是Android自帶的圖像:
StateListDrawable
Button
怎麼樣?試試吧,哥們:)
http://developer.android.com/reference/android/graphics/drawable/StateListDrawable.html
恐怕沒有這種內置的Android控制。您將需要使用Button
(或ImageButton
),並將背景(或圖像資源)設置爲a drawable with states。
以下是創建一個自定義按鈕,從開始到結束一個很好的教程。你甚至可以創建你自己的明星形象,如果你想變得非常狡猾,爲每個按鈕狀態。
可能是你需要使用selector
這是一個Button
(或ImageButton
)的狀態很有幫助。請參考this
您可以使用內置的btn_star
狀態列表drawable。
<ImageButton
android:id="@+id/favorite_button"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@android:drawable/btn_star" //This one!
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:background="#00ffffff" /> //Needed to remove the button background
請參閱http://developer.android.com/reference/android/R.drawable.html獲取可繪製的規範列表。 –
如何使它變黃? – 2016-01-25 07:51:24
我想我最喜歡的按鈕,像一個複選框,所以這個工作很適合我,而無需添加任何圖像切換邏輯在我onClickListener。在我的Java代碼中,我可以使用myFavoriteToggleButton.isChecked()
來確定採取的操作。
<CheckBox
android:button="@android:drawable/btn_star"
android:padding="@dimen/activity_horizontal_margin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/favorite"
android:background="@android:color/transparent"
android:layout_gravity="center"/>
只需添加下面的代碼在你的活動:
final ImageButton ButtonStar = (ImageButton) findViewById(R.id.star);
ButtonStar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isEnable){
ButtonStar.setImageDrawable(ContextCompat.getDrawable(getApplicationContext(),android.R.drawable.btn_star_big_off));
}else{
ButtonStar.setImageDrawable(ContextCompat.getDrawable(getApplicationContext(),android.R.drawable.btn_star_big_on));
}
isEnable = !isEnable;
}
});
需要注意的是:定義布爾isEnable = FALSE全球。 這是我的ImageButton XML代碼:
<ImageButton
android:id="@+id/star"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:src="@android:drawable/btn_star" />
你可以嘗試將它插入一個文本視圖。這是我發現的最簡單的方法。
在佈局XML我添加它作爲一個文本視圖
<TextView
android:id="@+id/tv_star_fav"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#00ffffff"
android:onClick="onToggleStar"
android:text="★"
android:textSize="40sp" />
然後,在代碼寫到類似下面的功能。
boolean isfavourite;
public void onToggleStar(View view){
TextView favouriteStar = (TextView) view;
if(!isfavourite){
// if the star is not already selected and you select it
isfavourite = true;
favouriteStar.setTextColor(Color.parseColor("#FFD600"));
}else{
// if the star is already selected and you unselect it
isfavourite = false;
favouriteStar.setTextColor(Color.parseColor("#9E9E9E"));
}
}
如何獲得更好的分辨率的圖像? – user1012480
我直接從 \ platforms \ android-14 \ data \ res \ drawable-hdpi文件夾中找到了我的。這些文件以名稱「btn_star」開頭 –
jkschneider
我得到,無法解析drawable button_focused ..我該如何解決這個問題?非常感謝! –