2010-05-06 14 views
36

मैं अपनी रूट लाइनरलायआउट तत्व (जो दोनों आयामों में fill_parent पर सेट है) सेट करने की कोशिश कर रहा हूं ताकि पृष्ठभूमि छवि हो जो हमेशा स्क्रीन के निचले बाएं कोने में स्थित हो, डिवाइस के अभिविन्यास से कोई फर्क नहीं पड़ता । यह उत्कृष्ट होगा अगर पृष्ठभूमि छवि स्थिति को सेट करने का कोई तरीका था जैसे कि आप "पृष्ठभूमि-स्थिति: बाएं नीचे;" का उपयोग कर सीएसएस के साथ कर सकते हैं। लेकिन मैं एंड्रॉइड में इसे हासिल करने का कोई तरीका नहीं देख रहा हूं। क्या इसे करने का कोई तरीका है?पृष्ठभूमि छवि प्लेसमेंट

सहायता के लिए धन्यवाद।

उत्तर

78

आप (उदाहरण के लिए "रेस/ड्रॉएबल/my_drawable.xml"

<?xml version="1.0" encoding="utf-8"?> 
<bitmap 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:src="@drawable/my_png_file" 
    android:gravity="bottom|left" /> 

एक XML फ़ाइल में अपने बिटमैप के साथ एक कस्टम बिटमैप drawable बनाने और फिर अपने दृश्य की पृष्ठभूमि के रूप में इस drawable एक्सएमएल सेट करना होगा ("@ drawables/my_drawable") ड्रॉइंग एक्सएमएल प्रारूप एंड्रॉइड साइट में बहुत खराब दस्तावेज है, हालांकि, यह निश्चित रूप से एक आसान समस्या नहीं है कि यह पता लगाने में आपकी समस्या कैसे हल हो जाए।

+0

का मुद्दा होगा, मैं किसी XML XML में उस XML बिटमैप को कैसे देख सकता हूं? – mr5

+0

वैसे ही आप किसी भी अन्य को आकर्षित करने के लिए संदर्भित करेंगे - मेरे उदाहरण में, यदि आपने इसे 'my_drawable.xml' कहा है तो इसे किसी भी अन्य स्थान पर' @ drawable/my_drawable' के रूप में संदर्भित किया जाएगा, जिसे आप किसी अन्य प्रकार के ड्रॉइंग (जैसे 'एंड्रॉइड: बैकग्राउंड', 'एंड्रॉइड: टेक्स्टव्यू, इत्यादि पर ड्रॉबल लेफ्ट') –

+0

कोई फ़ोल्डर res/drawables नहीं है। यदि आप इसे बनाने के लिए प्रयास करते हैं तो एक त्रुटि होती है। मैंने एक एक्सएमएल फ़ोल्डर बनाया और इसे वहां रखा और त्रुटि तय की गई – user2070775

9

यदि कोई लाभ मिलता है यह प्रोग्रामिक रूप से: छवि ले जाने के बजाय लेआउट फिट बैठती है। कोई विचार नहीं क्यों।

कोड:

Bitmap bmp = BitmapFactory.decodeResource(getResources(), 
       R.drawable.image); 
BitmapDrawable bitmapDrawable = new BitmapDrawable(bmp); 
bitmapDrawable.setGravity(Gravity.BOTTOM|Gravity.RIGHT); 
LinearLayout layout = (LinearLayout) findViewById(R.id.background_root); 
layout.setBackgroundDrawable(bitmapDrawable); 
+0

कोशिश करने के लिए भी सोचा नहीं था इसका एक अन्य लाभ यह है कि इसे केवल छवि को बदलने के कई विचारों पर लागू किया जा सकता है – Onimusha

0

एक RelativeLayout में अपने LinearLayout लपेटें और इसे करने के लिए एक imageView जोड़ें। एंड्रॉइड का उपयोग करना: layout_alignParentBottom और android: layout_alignParentLeft आप अपनी छवि को निचले बाएं स्थान पर डाल सकते हैं।

<RelativeLayout 
    android:id="@+id/relativeLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:src="@drawable/my_image" /> 

    <LinearLayout 
     android:id="@+id/linearLayout" 
     ... > 

सुनिश्चित करें कि छवि दृश्य पृष्ठभूमि में छवि को आकर्षित करने के लिए रिलेवेटिवआउट का पहला तत्व है।

0

मेरा जवाब बस ऊपर जवाब की एक अद्यतन आप पृष्ठभूमि के लिए XML का उपयोग कर रहे हैं, यह पहलू अनुपात में समस्या हो सकती है

Gravity.Fill_HORIZONTAL साथ फिट होगा

तो यह कोड

Bitmap bmp = BitmapFactory.decodeResource(getResources(), 
       R.drawable.image); 
BitmapDrawable bitmapDrawable = new BitmapDrawable(bmp); 
    bitmapDrawable.setGravity(Gravity.BOTTOM| Gravity.RIGHT| Gravity.FILL_HORIZONTAL); 
LinearLayout layout = (LinearLayout) findViewById(R.id.background_root); 
layout.setBackgroundDrawable(bitmapDrawable); 
का उपयोग करें लेआउट की चौड़ाई जिस पर आप पृष्ठभूमि लागू कर रहे हैं, आप इसे XML फ़ाइल में भी उल्लेख कर सकते हैं, लेकिन जैसा कि मैंने कहा है कि यह छवि अनुपात

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