2012-10-15 31 views
7

तो मेरे पास चार बटन हैं, वे सभी ऊंचाई और चौड़ाई दोनों के लिए match_parent का उपयोग करते हैं। मैं बटनों के भीतर छवियों को रखने के लिए "drawableTop" विशेषता का उपयोग करता हूं और मैं इसे बनाना चाहता हूं इसलिए मुझे प्रत्येक रिज़ॉल्यूशन के लिए अलग-अलग छवियों की आवश्यकता नहीं है। मैंने लिया एक चित्र स्क्रीनशॉट यहाँ है। परिदृश्य एक थोड़ा सा आ जाएगा।क्या कोई तरीका है कि मैं बटन पर छवियों को स्क्रीन पर फिट करने के लिए स्वत: आकार बदल सकता हूं?

Buttons-Portrait

तो यह ठीक है और सब दिखता है, लेकिन मैं केवल 4 अलग छवि संकल्प है और मेरे फ़ोन पर उन्हें बाहर की कोशिश कर सकारात्मक परिणाम नहीं था। क्या कोई तरीका है कि मेरे पास सिर्फ एक बड़ी छवि हो सकती है, केवल "खींचने योग्य" में कहें और क्या यह सभी संकल्पों में फिट होने के लिए कम हो गई है? यदि नहीं, तो मुझे क्या करना होगा? मैं वर्तमान में hdpi, ldpi, mdpi, और xhdpi को कवर करता हूं लेकिन मैं सभी सीमाओं को कवर करना चाहता हूं। अन्य घनत्व मौजूद हैं?

रहा ऑटो का आकार बदलने के लक्ष्य को हासिल कर सकते हैं, मैं भी लैंडस्केप का उपयोग करने से उपयोगकर्ताओं को अस्वीकृत करने के लिए नहीं होगा:

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="match_parent" 
    android:layout_weight="1" 
    android:baselineAligned="false" 
    android:orientation="horizontal" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:orientation="vertical" 
     tools:ignore="NestedWeights" > 

     <Button 
      android:id="@+id/bMap" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:drawableTop="@drawable/ic_camera" 
      android:text="Button" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:orientation="vertical" > 

     <Button 
      android:id="@+id/bCamera" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:drawableTop="@drawable/ic_camera" 
      android:text="Button" /> 
    </LinearLayout> 
</LinearLayout> 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="match_parent" 
    android:layout_weight="1" 
    android:baselineAligned="false" 
    android:orientation="horizontal" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:orientation="vertical" 
     tools:ignore="NestedWeights" > 

     <Button 
      android:id="@+id/bGallery" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:drawableTop="@drawable/ic_camera" 
      android:text="Button" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:orientation="vertical" > 

     <Button 
      android:id="@+id/bPlants" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:drawableTop="@drawable/ic_camera" 
      android:text="Button" /> 
    </LinearLayout> 
</LinearLayout> 
:

Buttons-Landscape

इसके अलावा, यहाँ एक्सएमएल है

उत्तर

5

AFAIK, यह आसानी से संभव नहीं है एक खींचने योग्य पृष्ठभूमि के साथ Button के साथ, जैसा कि आकर्षित करने योग्य दृश्य के साथ स्केल नहीं करता है।

मुझे विश्वास है कि अगर आप Button s से ImageButton s बदल चुके हैं, तो आप इसे कर सकते हैं, जो छवियों को स्केल करने के लिए अधिक विकल्प प्रदान करते हैं।

छविबटन कक्षा android:scaleType विशेषता का खुलासा करती है, जिसके साथ आप centerInside का उपयोग कर सकते हैं, छवि छवि को बाध्य करने के लिए छवि को छोटा कर देगा।

ImageButton के साथ आपको android:drawable के बजाय android:src के साथ छवि को परिभाषित करना चाहिए।

मुझे यकीन नहीं है कि छविबटन पर टेक्स्ट सेट करने का कोई तरीका है या नहीं। आपको एक और अधिक उन्नत लेआउट की आवश्यकता हो सकती है जिसमें एक LineView में टेक्स्टव्यू और टेक्स्ट व्यू शामिल है, और उसके बाद उस लाइनरलाउट को बटन के रूप में उपयोग करना (ऑनक्लिक, आदि जोड़ें)।

+0

हाँ, मैंने इसका शोध किया और देखा कि स्केल टाइप मेरी आवश्यकताओं के अनुरूप होगा लेकिन ऐसा लगता है कि छविबट्टन पर टेक्स्ट डालने का कोई तरीका नहीं है जैसे कि ऊपर की छवि में मेरे पास यह है, है ना? :/ – snotyak

+0

@ बैकपैकऑनहेड - नहीं, मुझे डर नहीं है। आपको यह प्रश्न उपयोगी हो सकता है: http://stackoverflow.com/questions/1532876/android-combining-text-image-on-a-button-or-imagebutton – Tim

+0

लाइनरलायआउट विकल्प – Geobits

0

हां, आपके पास एक बड़ी छवि हो सकती है और यह सभी संकल्पों में फिट होने के लिए घट जाती है। आप इस autosizing प्रोग्रामेटिक रूप से प्राप्त कर सकते हैं। this answer से DroidUtils.scaleButtonDrawables पर एक नज़र डालें।