दिलचस्प पोस्ट
एक प्रतिनिधि उद्देश्य-सी में कैसे काम करता है? दृश्य स्टूडियो 2010 कोड बदलते समय चलाने से पहले निर्माण नहीं कर रहा है जावा कन्वर्ट जीएमटी / यूटीसी को स्थानीय समय से अपेक्षित काम नहीं करता है मुझे क्यों प्राप्त होता है "HTTP हेडर के बाद रीडायरेक्ट नहीं किया जा सकता है" जब मैं Response.Redirect () को कॉल करता हूं? जेसन फाइल के मोंगोइमपोर्ट डैपर एसक्यूएल 2008 टेबल-वैल्यू पैरामीटर का समर्थन करता है? प्रोगार्ड: संदर्भित कक्षा com.google.android.gms.R नहीं मिल सकता है InputStream.available () जावा में क्या करता है? स्काला में "एवल" एक सर्लेट में आने वाले मल्टीपार्ट / फॉर्म-डेटा पैरामीटर को पार्स करने का आसान तरीका क्या एक विदेशी कुंजी स्वतः एक सूचकांक बनाती है? अजगर में थ्रेडिंग समानांतर नहीं होता है स्ट्रिंग को जावास्क्रिप्ट के साथ शीर्षक केस में कनवर्ट करें नोकोगिरि 'मणि देशी एक्सटेंशन बनाने में विफल' जब मैं बंडल इंस्टॉल चलाता हूं IE में "सीमा-त्रिज्या" के लिए सहायता

दो पाठ दृश्यों की ओर से, केवल एक के लिए ellipsize?

मुझे दो TextView तत्व दिखाना चाहते हैं (एक सूची आइटम में), बाईं ओर एक गठबंधन, एक से दाएं। कुछ इस तरह:

 |<TextView> <TextView>| 

(स्क्रीन के अंगों का प्रतिनिधित्व |

हालांकि, बाईं ओर स्थित TextView ऐसी सामग्री हो सकती है जो स्क्रीन पर फिट होने के लिए बहुत लंबा है। इस मामले में, मुझे यह अंडाकार करना है, लेकिन अभी भी पूरे सही TextView दिखाते हैं। कुछ इस तरह:

 |This is a lot of conte...<TextView>| 

इस पर मैंने कई प्रयास किए, LinearLayout और RelativeLayout दोनों का उपयोग किया है, और मैं एकमात्र समाधान के साथ आया हूं जो एक marginRight का उपयोग करना है और marginRight को साफ़ करने के लिए बाएं marginRight पर एक marginRight राइट TextView । जैसा कि आप कल्पना कर सकते हैं, हालांकि, यह इष्टतम नहीं है।

क्या कोई अन्य समाधान है?

अंतिम, LinearLayout समाधान:

 <LinearLayout android:layout_height="wrap_content" android:layout_width="fill_parent" android:orientation="horizontal" > <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_weight="1" android:ellipsize="end" android:inputType="text" /> <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_weight="0" android:layout_gravity="right" android:inputType="text" /> </LinearLayout> 

पुराने, TableLayout समाधान:

 <TableLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:stretchColumns="1" android:shrinkColumns="0" > <TableRow> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="end" android:singleLine="true" /> <TextView android:id="@+id/date" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:singleLine="true" android:ellipsize="none" android:gravity="right" /> </TableRow> </TableLayout> 

Solutions Collecting From Web of "दो पाठ दृश्यों की ओर से, केवल एक के लिए ellipsize?"

टेबल लेआउट का उपयोग करें और तालिका पंक्ति में दोनों TextView डालें, एक प्रयास करें मैंने कोशिश नहीं की है

सिर्फ एक विचार, आप पहली बार XML लेआउट में सही पर android:layout_alignParentRight="true" क्यों नहीं घोषित करते हैं और अपनी चौड़ाई को लपेट सामग्री, android:layout_alignParentRight="true" रूप में सेट करें android:layout_alignParentRight="true" और android:gravity="right" उसके बाद टेक्स्टव्यूव्यू को बाएं पर घोषित करें, अपनी चौड़ाई को android:layout__toLeftOf पैरेंट, android:layout__toLeftOf रूप में सेट करें android:layout__toLeftOf = {सही पर android:layout__toLeftOf का आईडी} android:layout__toLeftOf रूप में RelativeView दृश्य रखते हुए।

पहले सही पाठदृश्य की घोषणा करके, इसकी आवश्यक चौड़ाई को पहली बार गणना की जाएगी और दृश्य पर कब्जा कर लिया जाएगा, जबकि बाईं ओर का पाठदृश्य दृश्य के शेष स्थान पर कब्जा करेगा।

मैं अभी भी यह कोशिश नहीं की है हालांकि यह आपको कुछ विचार दे सकता है

[अद्यतन करें]

मैंने एक XML संसाधन लेआउट बनाने का प्रयास किया … और यह किसी तरह काम करता है …

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/right" android:layout_alignParentRight="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="right" android:text="right" > </TextView> <TextView android:id="@+id/left" android:layout_alignParentLeft="true" android:layout_toLeftOf="@id/right" android:layout_width="fill_parent" android:layout_height="wrap_content" android:ellipsize="end" android:lines="1" android:singleLine="true" android:maxLines="1" android:text="too looooooooooong ofskgjo sdogj sdkogjdfgds dskjgdsko jgleft" > </TextView> </RelativeLayout> 

LinearLayout उत्तर इस समस्या के साथ मेरे लिए काम किया। एक अलग जवाब के रूप में पोस्ट किया गया क्योंकि यह स्पष्ट नहीं था कि पूछने वाले के लिए क्या काम किया और नहीं।

एक अंतर टेबल लेआउट मेरे लिए कम आदर्श था क्योंकि मेरे पास डेटा की दो पंक्तियां थीं, और मैं नीचे पंक्ति को इस सवाल का वर्णन करने के लिए चाहता था, और इस क्षेत्र को चलाने के लिए शीर्ष पंक्ति। उस प्रश्न का उत्तर किसी अन्य प्रश्न में दिया गया है: कॉललैपैन टेबलटेलआउट में , लेकिन रैनेयर लयआउट सरल था।

हालांकि चौड़ाई प्राप्त करने के लिए मुझे थोड़ा सा ले लिया। मैं प्रदर्शन के लिए स्केलिंग आइटम पर 0dp चौड़ाई का उपयोग करने के एंड्रॉइड लिंट ट्वीक को शामिल किया।

 <LinearLayout android:layout_height="wrap_content" android:layout_width="fill_parent" android:orientation="horizontal" > <TextView android:layout_height="wrap_content" android:layout_width="0dp" android:layout_weight="1" android:ellipsize="end" android:inputType="text" /> <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_weight="0" android:layout_gravity="right" android:inputType="text" /> </LinearLayout> 

इस पर और व्यावहारिक रूप से बराबर के कई जवाब हैं, SO पर दोहराए गए प्रश्न सुझाए गए दृष्टिकोण आमतौर पर काम करते हैं, क्रमशः। इसे एक LinearLayout में डालकर, एक अतिरिक्त RelativeLayout TableLayout में पूरे लपेटें, एक TableLayout उपयोग करें; ये सब एक सरल लेआउट के लिए इसे हल करने लगते हैं लेकिन यदि आपको इन दो TextView को कुछ और अधिक जटिल चीज़ों के अंदर की जरूरत है, या फिर एक ही लेआउट का पुन: उपयोग किया जाएगा, उदाहरण के लिए, RecyclerView द्वारा, चीजें बहुत तेज़ी से टूट जाती हैं

मैंने पाया कि एकमात्र समाधान वास्तव में हर समय काम करता है , भले ही आप इसे किस बड़े लेआउट में डाल दें, एक कस्टम लेआउट है यह क्रियान्वयन करना बहुत आसान है, और यह संभवतः प्राप्त होने पर कमजोर होने के कारण, यह उचित रूप से फ्लैट लेआउट रखेगा, यह आसान बनाए रखना है- इसलिए लंबे समय में, मैं इस समस्या का सबसे अच्छा समाधान मानता हूं।

 public class TwoTextLayout extends ViewGroup { public TwoTextLayout(Context context) { super(context); } public TwoTextLayout(Context context, AttributeSet attrs) { super(context, attrs); } public TwoTextLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { final int count = getChildCount(); if (count != 2) throw new IllegalStateException("TwoTextLayout needs exactly two children"); int childLeft = this.getPaddingLeft(); int childTop = this.getPaddingTop(); int childRight = this.getMeasuredWidth() - this.getPaddingRight(); int childBottom = this.getMeasuredHeight() - this.getPaddingBottom(); int childWidth = childRight - childLeft; int childHeight = childBottom - childTop; View text1View = getChildAt(0); text1View.measure(MeasureSpec.makeMeasureSpec(childWidth, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(childHeight, MeasureSpec.AT_MOST)); int text1Width = text1View.getMeasuredWidth(); int text1Height = text1View.getMeasuredHeight(); View text2View = getChildAt(1); text2View.measure(MeasureSpec.makeMeasureSpec(childWidth, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(childHeight, MeasureSpec.AT_MOST)); int text2Width = text2View.getMeasuredWidth(); int text2Height = text2View.getMeasuredHeight(); if (text1Width + text2Width > childRight) text1Width = childRight - text2Width; text1View.layout(childLeft, childTop, childLeft + text1Width, childTop + text1Height); text2View.layout(childLeft + text1Width, childTop, childLeft + text1Width + text2Width, childTop + text2Height); } } 

कार्यान्वयन सरल नहीं हो सकता, यह दो ग्रंथों (या किसी अन्य बाल विचारों को वास्तव में) को मापता है और अगर उनकी संयुक्त चौड़ाई लेआउट की चौड़ाई से अधिक है, तो पहले दृश्य की चौड़ाई कम हो जाती है।

और अगर आपको संशोधनों की आवश्यकता है, उदाहरण के लिए। दूसरे पाठ को पहले की आधार रेखा में संरेखित करने के लिए, आप इसे आसानी से हल कर सकते हैं:

 text2View.layout(childLeft + text1Width, childTop + text1Height - text2Height, childLeft + text1Width + text2Width, childTop + text1Height); 

या किसी अन्य समाधान, जैसे कि पहले के संबंध में दूसरे दृश्य को सिकुड़ते हुए, दाएं इमेजिंग आदि।

आप सही टेक्स्टव्यू पर बाएं किनारे क्यों नहीं डालते हैं? मैं इस के लिए एक दृष्टिकोण का उपयोग कर रहा हूँ

 |<TextView> <ImageButton>| 

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