मुझे लगता है कि मुझे लगता है कि बना रहा हूं अपने बच्चे TextViews
का फ़ॉन्ट आकार पैमाने पर एक सेट चौड़ाई में सभी फिट करने के लिए होगा एक कस्टम दृश्य है, इसलिए प्रत्येक की अपनी लाइन पर है। जाहिर है कि इसे समझने के लिए चौड़ाई की आवश्यकता होगी। मैं तो जैसे onMeasure()
अधिरोहित था:हैंडलिंग वजन
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int widthSize = MeasureSpec.getSize(widthMeasureSpec);
int lineWidth = widthSize - getPaddingLeft() - getPaddingRight();
// Change the text size until the largest line of text fits.
while (lineWidth < calculateTextWidth()) {
for (TextView textView : this.childViews) {
float newSize = textView.getTextSize() - 1;
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, newSize);
}
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
calculateTextWidth()
पाठ में से सबसे बड़ी लाइन की चौड़ाई की गणना करता है, और सब कुछ है कि के साथ काम करता है। इस कोड को FILL_PARENT और WRAP_CONTENT चौड़ाई के लिए ठीक ऊपर काम कर रहा है, लेकिन जब मैं शिकंजा घटक एक वजन देने के लिए और यह अपने वजन कि जिस तरह से स्वत: सेट कर सकें कोशिश - MeasureSpec.getSize(widthMeasureSpec)
रिटर्न 0, getMinimumSuggestedWidth()
करता है। यह एक अद्भुत गतिविधि त्रुटि का जवाब नहीं देता है, क्योंकि लाइनविड्थ हमेशा calculateTextWidth()
से कम होगा, इसलिए while
लूप हमेशा के लिए चलता है। XML कोड मैं का इस्तेमाल किया यह था, अनिवार्य रूप से:
<com.my.widgets.ScalingTextViewGroup
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
android:gravity="center_horizontal"
>
<TextView
android:id="@+id/text_1"
android:text="Text 1"
android:textSize="20sp" />
<TextView
android:id="@+id/text_2"
android:text="Text 2"
android:textSize="18sp" />
<TextView
android:id="@+id/text_3"
android:text="Text 3"
android:textSize="18sp" />
<TextView
android:id="@+id/text_4"
android:text="Text 4"
android:textSize="18sp" />
</com.my.widgets.ScalingTextViewGroup>
मुझे समझ में क्यों यह 0 लौटा रहा है - जाहिर है, इसे 0 पर सेट किया जा रहा है - लेकिन मैं इसे layout_weight उपयोग करने के लिए कैसे मिलता है? मुझे लगता है कि यह ऐसा कुछ है जिसका सरल जवाब होना चाहिए, लेकिन मुझे यह नुकसान हुआ है कि यह क्या है।
तो यदि आप थोड़ी देर पहले बंद हो गए थे तो आपके पास निर्दिष्ट वजन के अनुसार अधिकतम उपलब्ध आकार होगा? (अब अपने लिंक पढ़ने के लिए जा रहे हैं ...) –