xml

2012-01-12 23 views
13

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

<?xml version="1.0" encoding="utf-8"?> 
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
    <shape android:shape="rectangle" android:gravity="center"> 
     <solid android:color="#EEEEEE" /> 
    </shape> 
    </item> 
    <item> 
    <shape android:shape="line" android:gravity="bottom" > 
     <stroke android:width="1dip" android:color="#010101"/> 
    </shape> 
    </item> 
    </layer-list> 

लेकिन यह केंद्र के माध्यम से 'सबसे नीचे' बिट लाइन खींचता है, यानि कि गुरुत्वाकर्षण पर ध्यान नहीं देता =। मैं इसे कैसे ठीक करूं?

संपादित करें: यह प्रश्न बहुत पुराना है। चयनित उत्तर मौजूदा एपीआई आदि के साथ ऑनलाइन हो सकता है या नहीं भी हो सकता है। आपको इसे जोड़ने के बजाए अपना खुद का प्रश्न शुरू करने के लिए प्रोत्साहित किया जाता है, जिसका अब निगरानी नहीं किया जाता है।

उत्तर

5

मैं इस के लिए एक नौ पैच छवि का उपयोग की सलाह देते हैं - यहाँ एक उदाहरण है कि काम करना चाहिए:

Example nine-patch image

(! यह केवल छोटे है, लेकिन ऐसा नहीं है)

आप तो इसे अपने खींचने योग्य फ़ोल्डर में रखें और अपनी फ़्रेमलाउट की पृष्ठभूमि को सेट करें, फिर आपको वांछित परिणाम प्राप्त करना चाहिए। सामग्री ग्रे क्षेत्र में जाएगी और # 010101 पिक्सेल नीचे एक रेखा बनाने के लिए क्षैतिज रूप से फैलाया जाएगा। बस यह सुनिश्चित करने के लिए .9.png एक्सटेंशन को रखना सुनिश्चित करें कि यह नौ-पैच के रूप में लोड हो जाए।

आशा है कि आप

+1

यह एक अच्छा मुद्दा है, मैं इसे इस तरह से कर सकता हूं। असल में, मैं करूँगा लेकिन मुझे अभी भी उस पंक्ति के लिए काम कर रहे गुरुत्वाकर्षण टैग को पाने के लिए गर्म जानने में दिलचस्पी होगी - मेरे लिए बहुत अच्छा समाधान लगता है लेकिन आपके सुझाव के लिए धन्यवाद। –

+1

गुरुत्वाकर्षण टैग का कोई उल्लेख नहीं [यहां] (http://developer.android.com/reference/android/graphics/drawable/ShapeDrawable.html)।मैं शुद्ध xml का उपयोग करके इसे प्राप्त करने का कोई तरीका नहीं देख सकता, आप कोड में आकार बदलने योग्य बना सकते हैं और लेआउट की सीमाओं के आधार पर इसकी सीमा निर्धारित कर सकते हैं? – kingraam

17

में मदद करता है दुर्भाग्य से मैं गुरुत्वाकर्षण ड्रॉएबल के लिए काम कर पाने के लिए एक रास्ता नहीं मिला है, लेकिन मैंने पाया है आप कैसे प्राप्त कर सकते हैं शुद्ध एक्सएमएल साथ क्या आप हैं:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:top="-2dp" 
     android:left="-2dp" 
     android:right="0dp" 
     android:bottom="1dp" 
     > 
     <shape android:shape="rectangle"> 
      <solid android:color="#EEEEEE"/> 
      <stroke android:width="1dp" android:color="#010101"/> 
     </shape> 
    </item> 
</layer-list> 

शुभकामनाएँ :)

+1

<बिटमैप एंड्रॉयड: गुरुत्वाकर्षण = "left | नीचे" एंड्रॉयड: src = "@ drawable/myDrawable" /> usman

22

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

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

    <!-- CREATE A RECTANGLE WITH YOUR BORDER COLOR --> 
    <item> 
     <shape android:shape="rectangle" > 
      <solid android:color="#fff"/> 
     </shape> 
    </item> 

    <!-- NOW DEFINE THE NORMAL COLOR--> 
    <item android:bottom="BOTTOM_BORDER_THICKNESS E.G. 4dp"> 
     <shape android:shape="rectangle" > 
      <solid android:color="#ccc"/> 
     </shape> 
    </item> 
</layer-list> 

या, Juan Pablo Saraceno के रूप में सुझाव: मैं इस का उपयोग

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item> 
     <color android:color="YOUR_BORDER_COLOR" /> 
    </item> 
    <item android:top="YOUR_BORDER_THICKNESS"> 
     <color android:color="YOUR_BG_COLOR" /> 
    </item> 
</layer-list> 
+3

यह एक बहुत अच्छी जवाब है और बेहतर तैनात IMHO होने के लिए योग्य है। मुझे लगता है कि शर्म की बात है कि एंड्रॉइड गुरुत्वाकर्षण को उचित तरीके से समर्थन नहीं देता है और इसे करने के लिए मजबूर करता है। यह आयताकार, आकार, और भी सरल के बजाय टैग का उपयोग करने के लिए भी मेरे लिए काम किया। <परत-सूची xmlns: एंड्रॉयड = "http://schemas.android.com/apk/res/android"> <रंग एंड्रॉयड: रंग = "YOUR_BORDER_COLOR" /> <आइटम एंड्रॉयड: शीर्ष = "YOUR_BORDER_THICKNESS"> <रंग एंड्रॉयड: रंग = "YOUR_BG_COLOR" /> –

+5

केवल समस्या उत्पन्न करता है कि मैं, अधिक निकालना है क्योंकि आप अपने बॉर्डर का रंग के साथ एक पूर्ण आयत बनाकर कर रहे हैं केवल वास्तविक साथ यह अधिक निकालना है आयत। वास्तविक गुरुत्वाकर्षण के बिना अभी भी 9-पैच जीतता है। –

+1

यदि आपको पारदर्शी शीर्ष भाग और ठोस नीचे भाग की आवश्यकता है तो यह काम नहीं करेगा। तो मुझे लगता है कि मैं नौ पैच के साथ काम करने के लिए * होगा? –

1
<?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="@color/Black" /> 
     </shape> 
    </item> 
    <item android:bottom="5dp"> 
     <shape android:shape="rectangle" > 
      <solid android:color="@color/White" /> 
     </shape> 
    </item> 

</layer-list> 
2

यह काम करता है!

<item> 
     <bitmap 
     android:gravity="left|bottom" 
     android:src="@drawable/myDrawable" /> 
</item> 
+0

नहीं यह आकार के लिए नहीं है क्योंकि यह एक ड्राइट योग्य है, बिटमैप नहीं। – nsvir

1

ठीक है, यह बहुत पुराना सवाल है, लेकिन उत्तर में से कोई भी वास्तविक प्रश्न (कैसे gravity काम कर रहे बनाने के लिए) तो यहाँ एक काम उदाहरण है जवाब देने के लिए लग रहे हैं:,

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

    <item> 
     <color android:color="#2196F3"/>  <!-- Background color --> 
    </item> 

    <item android:gravity="bottom"> 
     <shape> 
      <size android:height="10dp" />  <!-- I would suggest 1dp --> 
      <solid android:color="#F50057" /> <!-- Line color --> 
     </shape> 
    </item> 
</layer-list> 

तुल्यता के आधार पर अगर आप गुरुत्वाकर्षण left या right परिवर्तन विशेषता height से width