2012-03-28 11 views
38

पर एक पंक्ति मैं पाठ के नीचे एक विभक्त रेखा के लिए टेक्स्टव्यू की पृष्ठभूमि के रूप में एक ड्रॉइंग का उपयोग कर रहा हूं। एक इस drawable-एक्सएमएल के साथ यह achivied:आकार पृष्ठभूमि के रूप में खींचने योग्य, नीचे

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item> 
     <shape 
     android:shape="rectangle"> 
      <solid android:color="#FFDDDDDD" /> 
      <gradient 
       android:angle="0" 
       android:startColor="#FFAAAAAA" 
       android:endColor="#FFEEEEEE" 
       /> 
     </shape> 
    </item> 

    <item android:bottom="2dp"> 
     <shape 
     android:shape="rectangle"> 
      <solid android:color="#FF000000" /> 
     </shape> 
    </item> 

</layer-list> 

लेकिन इस विधि एक काले रंग की आयत के ऊपर एक रंगीन आयत खींचता है। मैं आकार के निचले हिस्से में सिर्फ काले आयत के साथ रेखा रखना चाहता हूं क्योंकि काला पारदर्शी नहीं है। मैं इसे कैसे प्राप्त कर सकता हूं?

+0

overkill की तरह लगता है। क्यों न सिर्फ रंगीन दृश्य का उपयोग करें? – dmon

+0

वही लागू होता है - मैं उस दृश्य के नीचे एक पतली रेखा कैसे जोड़ूं? – ZoolWay

+2

मेरा यही मतलब था, दृश्य रेखा है। '<एंड्रॉइड देखें: पृष्ठभूमि रंग =" # एफएफ 000000 "एंड्रॉइड: लेआउट_हेइट =" 2 डीपी "एंड्रॉइड: layout_width =" fill_parent "/>' – dmon

उत्तर

27

सामान्य रूप से, मैं पृष्ठभूमि के साथ जितना संभव हो उतना गड़बड़ करने की कोशिश करता हूं जब तक कि पूरी तरह से जरूरी नहीं है, क्योंकि ऐसा करने से डिफ़ॉल्ट पृष्ठभूमि रंगों को ओवरराइड किया जाता है, जिनमें फोकस, दबाने आदि के लिए राज्य होते हैं। मैं सुझाव देता हूं कि केवल एक अतिरिक्त दृश्य का उपयोग करें (लंबवत में LinearLayout) जितना मोटा हो उतना मोटा होना चाहिए। उदाहरण के लिए:

<View 
     android:background="#FF000000" 
     android:layout_height="2dp" 
     android:layout_width="fill_parent"/> 
+7

हमम मैं आपके समाधान के बारे में बहुत आश्वस्त नहीं हूं, क्योंकि इसे अतिरिक्त लेआउट और अतिरिक्त दृश्य की आवश्यकता है, दोनों भारी हैं वस्तुओं को सिर्फ एक क्षैतिज रेखा के लिए ...यदि आप पृष्ठभूमि के लिए एलर्जी हैं तो क्यों ड्राइड() पर ओवरराइड नहीं करते हैं और बस एक रेखा खींचते हैं? – rupps

+4

यह गंदे कामकाज – ruX

+0

अहहहाहाहा बहुत सरल, बहुत शानदार है। मैंने सफलता के बिना एक सरल नीचे लाइन पृष्ठभूमि करने की कोशिश की है। मुझे ऐसा क्यों नहीं लगता? धन्यवाद – pablobaldez

158

इस प्रकार मुझे अपने लिए नीचे एक रेखा मिली। एक स्ट्रोक ड्रा लेकिन फिर आइटम बदलाव और पक्षों के लिए ऊपर और पक्षों पाने के लिए स्ट्रोक नहीं दिखाने के लिए:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:top="-6dp" android:left="-6dp" android:right="-6dp"> 
     <shape> 
      <solid android:color="#2b7996"/> 
      <stroke android:color="#33b5e5" android:width="6dp"/> 
     </shape> 
    </item> 
</layer-list> 
+14

यह स्वीकार्य उत्तर आईएमओ होना चाहिए, क्योंकि यह समस्या का सीधा समाधान देता है। – Abhishek

+0

मुझे लगा जैसे ओपी ठोस क्षेत्र में रंग रखने से बचना चाहता था। यह मामला है। # 2b7996 के बजाय, ठोस # 00000000 के साथ पारदर्शी हो सकता है। एक 8 अंक हेक्स मान अल्फा को पहले दो अंकों के साथ निर्दिष्ट करता है। –

+0

शानदार कामकाज :) – eMich

9

मुझे लगता है कि यह बेहतर समाधान है: जहां कभी भी इस समाधान के साथ

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:gravity="bottom"> 
     <shape> 
      <size android:height="1dp" /> 
      <solid android:color="#000000" /> 
     </shape> 
    </item> 
</layer-list> 
+0

यह समाधान सैमसंग लॉलीपॉप को छोड़कर लगभग सभी उपकरणों के लिए काम करता है। संपूर्ण दृश्य 'ठोस' टैग में दिए गए रंग के साथ खींचा जाता है। बाजार के सैमसंग शेयर के कारण इसे अनदेखा नहीं किया जाना चाहिए। –

1

आपको अलग-अलग लाइन की आवश्यकता होती है। मेरी आवश्यकता केवल रेखांकित थी। यहां तक ​​कि आप लेआउट में अलग-अलग रंग भी दे सकते हैं। आप चित्र, सफेद रेखा enter image description here

<?xml version="1.0" encoding="UTF-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 

<item android:top="-5dp" android:left="-5dp" android:right="-5dp"> 
    <shape> 
     <solid android:color="@android:color/transparent"/> 
     <stroke android:color="@color/white" android:width="5dp"/> 
    </shape> 
</item> 

<item android:top="-5dp" android:bottom="-5dp" android:right="-5dp"> 
    <shape> 
     <solid android:color="@android:color/transparent"/> 
     <stroke android:color="@color/colorPrimaryDark" android:width="5dp"/> 
    </shape> 
</item> 

<item android:bottom="-5dp" android:left="-5dp" android:right="-5dp"> 
    <shape> 
     <solid android:color="@android:color/transparent"/> 
     <stroke android:color="@color/colorPrimaryDark" android:width="5dp"/> 
    </shape> 
</item> 

<item android:top="-5dp" android:left="-5dp" android:bottom="-5dp"> 
    <shape> 
     <solid android:color="@android:color/transparent"/> 
     <stroke android:color="@color/colorPrimaryDark" android:width="5dp"/> 
    </shape> 
</item> 

<item android:bottom="2dp" android:left="5dp" android:right="5dp" android:top="5dp"> 
    <shape> 
     <solid android:color="@color/colorPrimary"/> 

     <corners android:bottomRightRadius="0dp" 
      android:bottomLeftRadius="0dp" 
      android:topLeftRadius="0dp" 
      android:topRightRadius="0dp" /> 
    </shape> 

</item> 

2

समान कार्य के लिए आम तौर पर नीचे में देख सकते हैं - मैं इस तरह परत-सूची drawable बनाया:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item> 
    <shape android:shape="rectangle"> 
     <solid android:color="@color/underlineColor"/> 
    </shape> 
</item> 
<item android:bottom="3dp"> 
    <shape android:shape="rectangle"> 
     <solid android:color="@color/buttonColor"/> 
    </shape> 
</item> 

विचार है सबसे पहले आप अंडरलाइन रंग के साथ आयताकार खींचते हैं और फिर इसके शीर्ष पर आप वास्तविक बटन रंग के साथ एक और आयत खींचते हैं लेकिन नीचे पैडिंग लागू करते हैं। यह हमेशा काम करता है।

लेकिन जब मुझे बटन रंग पारदर्शी होने की आवश्यकता होती है तो मैं ऊपर खींचने योग्य का उपयोग नहीं कर सका। मैं एक और समाधान

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item> 
    <shape android:shape="rectangle"> 
     <solid android:color="@android:color/transparent"/> 
    </shape> 
</item> 

<item android:drawable="@drawable/white_box" android:gravity="bottom" android:height="2dp"/> 
</layer-list> 

पाया (जैसा कि आप यहाँ देख सकते हैं mainButtonColor पारदर्शी है और white_box सफेद ठोस के साथ सिर्फ एक सरल आयत drawable है)

+0

'एंड्रॉइड: गुरुत्वाकर्षण =" नीचे "' काम करने के लिए न्यूनतम एपीआई 23 की आवश्यकता है। –

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