2011-11-23 15 views
14

मैं रेटिंग स्टार की तरह अपने ऐप में एक स्टार के आकार का बटन डालना चाहता हूं। मैंने पहले से ही एक स्टार रेटिंग बार का उपयोग करने की कोशिश की है, लेकिन दुर्भाग्यवश यह बटन के रूप में काम नहीं करता है।एंड्रॉइड में स्टार बटन

मैं इसे एक बटन के रूप में काम करना चाहता हूं, यहां तक ​​कि बेहतर स्थिति की पृष्ठभूमि पीले रंग की है ... कोई सुझाव? धन्यवाद।

उत्तर

27

ज़रूर, इस तरह एक लेआउट संसाधन का उपयोग करें:

<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 पर एक राज्य सूची drawable यह है कि एक एक्सएमएल फ़ाइल के रूप में सहेजा जाता है की तरह परिभाषित के साथ इस जोड़ी कर सकते हैं:

<?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> 

यहाँ वे छवियां हैं जो एंड्रॉइड के साथ पैक करती हैं:

  • Off ऑफ
  • On पर
  • Disabled विकलांग
  • On Pressed पर दबाया
  • Off Pressed बंद दबाया
+1

मैं उन छवियों को बेहतर समाधान में कैसे प्राप्त कर सकता हूं? – user1012480

+5

मुझे सीधे <एंड्रॉइड एसडीके पथ> \ प्लेटफॉर्म \ एंड्रॉइड -14 \ डेटा \ res \ drawable-hdpi फ़ोल्डर से बाहर मिला। फाइलें "btn_star" नाम से शुरू होती हैं – jkschneider

+0

मुझे मिलता है, खींचने योग्य बटन_फोक्यूज्ड को हल नहीं कर सकता .. मैं इसे कैसे ठीक कर सकता हूं? बहुत बहुत धन्यवाद! –

1

मुझे डर है कि यह है कि कर रहा हूँ। आपको Button (या ImageButton) का उपयोग करने की आवश्यकता होगी, और पृष्ठभूमि (या छवि संसाधन) को a drawable with states पर सेट करें।

2

यहाँ शुरू से आखिर तक एक कस्टम बटन बनाने, के लिए एक बहुत अच्छी ट्यूटोरियल है। यदि आप बटन बटनों में से प्रत्येक के लिए वास्तव में चालाक होना चाहते हैं, तो आप अपनी खुद की स्टार छवि भी बना सकते हैं।

http://www.youtube.com/watch?v=zXXCFmfJMNw

0

हो सकता है आप एक selector जो एक Button (या एक ImageButton) के राज्य के लिए उपयोगी है उपयोग करने के लिए की जरूरत है। देखें this

13

आप अंतर्निहित btn_star statelist 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 
+0

drawables की कैनोलिक सूची के लिए http://developer.android.com/reference/android/R.drawable.html देखें। –

+2

मैं इसे पीला कैसे बना सकता हूं? –

3

मैं एक चेकबॉक्स की तरह व्यवहार करने के लिए मेरी पसंदीदा बटन चाहता था, इसलिए यह मेरी onClickListener में किसी भी छवि टॉगल तर्क जोड़े बिना मेरे लिए अच्छी तरह से काम किया,। मेरे जावा कोड में मैं उठाई गई कार्रवाई को निर्धारित करने के लिए 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"/> 
1

बस नीचे दिए गए कोड को जोड़ने, आपके गतिविधि में:

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 एक्सएमएल कोड है:

<ImageButton 
       android:id="@+id/star" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:background="@null" 
       android:src="@android:drawable/btn_star" /> 
1

आप एक पाठ दृश्य के रूप में सम्मिलित करने के लिए कोशिश कर सकते हैं। यह ऐसा करने का सबसे आसान तरीका था।

लेआउट एक्सएमएल में मैं

<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")); 
    } 

} 
संबंधित मुद्दे