2011-02-10 8 views
5

मैं पाठ की एक पंक्ति जो की तरह कुछ हो जाएगा प्राप्त करने के लिए कोशिश कर रहा हूँ का उपयोग कर लेआउटएंड्रॉयड layout_weight, layout_width और maxWidth

foofoofoo - barbarbar

लेकिन मैं इसे foo दीर्घवृत्त और अगर यह जीता 'बार करना चाहते हैं एक लाइन पर फिट नहीं है। यानी मैं उन्हें कम करने की कोशिश कर रहा हूं।

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <TextView android:id="@+id/text_1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:adjustViewBounds="true" 
     android:maxWidth="0dip" 
     android:layout_weight="1" 
     android:textColor="#ffffff" 
     android:singleLine="true" 
     android:ellipsize="true" 
     android:text="foofoofoofoo" /> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textColor="#ffffff" 
     android:text=" - " /> 
    <TextView 
     android:id="@+id/text_2" 
     android:layout_width="wrap_content"       
     android:layout_height="wrap_content" 
     android:maxWidth="0dip" 
     android:layout_weight="1" 
     android:textColor="#ffffff" 
     android:singleLine="true" 
     android:ellipsize="true" 
     android:text="barbarbarbar" /> 
</LinearLayout> 

मेरे साथ भालू आंशिक रूप से काम करता है।

स्थापना TextView के layout_width0dip और layout_weight1 होने के लिए मतलब है कि वे उपलब्ध स्थान प्रत्येक का 50% तक का समय लग जाएगा।

singleLinetrue को true करने और ellipsize स्थापना मतलब है कि वे foofoo ... अगर पाठ कंटेनर से भी बड़ा है की तरह दिखाई देगा।

इसलिए मेरे परिणाम (यदि पाठ लंबी है)

foofoo होना चाहिए .. - barbar ..

कौन सा है! तो यह काम करता है।

अब मामले मैं ठीक करने के लिए कोशिश कर रहा हूँ, है अगर पहले TextView (आईडी: पाठ_1) पाठ है कि 50% से layout_width="0dip" और layout_weight="1" मैं इसे wrap_content करना चाहते दिया कम है। अन्यथा ऐसा लगता है कि:

fooरिक्त स्थान- barbar ..

और मैं चाहता हूँ

foo - barbarbar

यही कारण है कि मैंने layout_width="wrap_content" बदल दिया है और android:maxWidth="0dip" जोड़ा लेकिन यह काम नहीं करता है! ऐसा लगता है कि मुझे wrap_content कह रहा है और अभी भी यह दृश्य 50% दे रहा है!

मैंने पढ़ा है कि आपको android:adjustViewBounds="true"maxWidth के लिए काम करने की आवश्यकता है लेकिन इससे कोई प्रभाव नहीं पड़ा।

उत्तर

10

यह सबसे अच्छा है जो मैं कर सकता था, यह देखने के लिए तारों को बदलने का प्रयास करें कि यह इरादे से काम करता है या नहीं।

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:shrinkColumns="0,2" 
    android:stretchColumns="0,2"> 
    <TableRow> 
     <TextView android:id="@+id/textView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:singleLine="true" 
      android:ellipsize="end" 
      android:text="foofoofoo"/> 
     <TextView android:id="@+id/textView3" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="-" 
      android:gravity="center_horizontal"/> 
     <TextView android:id="@+id/textView2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:singleLine="true" 
      android:ellipsize="end" 
      android:text="barbarbarbarbarbarbarbarbarbarbarbar"/> 
    </TableRow> 
</TableLayout> 
+2

एंड्रॉइड निकालें: stretchColumns = " 0,2 ", और यह काम करता है। वैसे भी !:-) धन्यवाद – Blundell

+1

@ ब्लंडेल वाह, मैं एक बाउंटी शिकारी हूं! खुशी है कि यह काम किया और पुरस्कार के लिए धन्यवाद। – bigstones

+2

सहायता हम दोनों है। मैं एक लाभकारी हूं :- डी – Blundell

2

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

सबसे पहले, आप विचारों को समान रूप से साझा करना चाहते हैं जब दृश्य में पाठ की मात्रा समान होती है।

दूसरा, आप पर विचारों को अन्य दृश्य में कम पाठ होने पर समान रूप से स्थान साझा करना चाहते हैं।

यहां कई अन्य मामले हैं जिन्हें आप चाहते हैं किसी भी तरह से संभाला जा सकता है। जो मैं व्यक्त करने की कोशिश कर रहा हूं, वह यह है कि आप अलग-अलग तरीकों से चीजों को संभालने के लिए एक ही लेआउट पूछ रहे हैं, यही कारण है कि आप इसे एक ही लेआउट के साथ प्राप्त करने में सक्षम नहीं हैं।

+0

मैं मूल रूप से कहना चाहता हूं कि अधिकतमविड्थ अंतरिक्ष (इसलिए elipsing) साझा कर रहा है, लेकिन आम तौर पर केवल wrap_content। तो मुझे लगता है कि यह wrap_content होगा जब तक wrap_content का डुबकी मूल्य> 50% तो यह maxWidth (जो 50% है) का उपयोग करेगा, नहीं? – Blundell

+0

'जब तक wrap_content का डुबकी मूल्य> 50% तब यह maxWidth' का उपयोग करेगा ... मुझे सच में यकीन नहीं है कि आप क्या कहने की कोशिश कर रहे हैं। 'wrap_content' डुबकी मान का उपयोग नहीं करता है। – user432209

+0

हां यह नहीं है लेकिन maxWidth को लेआउट_विड्थ के साथ किसी तरह से बातचीत करना है। तो मेरा मतलब है पृष्ठभूमि में इसे लेआउट की चौड़ाई की गणना करनी चाहिए और यदि यह है> maxWidth maxwidth का उपयोग करें। तो मैं wrap_content कह रहा हूँ, लेकिन अगर (पृष्ठभूमि में) wrap_content है> 50% maxWidth का उपयोग करें। क्या यह नहीं काम करता है? – Blundell

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