[android] एंड्रॉइड के टेक्स्टव्यू पर शीर्ष और निचली जगह को कैसे हटाएं



Answers

अपने निचले और शीर्ष मार्जिन को नकारात्मक पर सेट करने का प्रयास करें।

कुछ इस तरह:

android:layout_marginTop="-5dp"
android:layout_marginBottom="-5dp"

तदनुसार मूल्यों को समायोजित करें।

Question

जब मैं निम्न XML को लेआउट फ़ाइल में शामिल करता हूं, तो मैं नीचे दी गई छवि देख सकता हूं। यदि आप इसे देखते हैं, तो आप महसूस कर सकते हैं कि TextView में शीर्ष और निचली जगह है।

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="E1"
android:background="#ff00ff00"/>

मैं अंतरिक्ष को हटाना चाहता हूं। इसे कैसे निकालें? इसे क्या कहते है? अगर किसी के पास सुराग है .. कृपया मुझे बताएं। अग्रिम में धन्यवाद।




एक LinearLayout के अंदर डिफ़ॉल्ट पैडिंग एक मुद्दा हो सकता है। इसे 0 डीपी पर सेट करने का प्रयास करें। यह मेरे लिए काम किया।




क्या आपने लेआउट मार्जिन परिभाषित किया है? उदाहरण के लिए:

android:layout_marginTop="5dp"

अन्यथा, यदि आपका टेक्स्ट व्यू लाइनरलाइट या अन्य कंटेनर के अंदर लपेटा गया है, तो उस ठंड में या तो पैडिंग या मार्जिन भी है।




इसे ठीक करने के लिए मेरा तरीका बहुत हैकी है, लेकिन मैं पाठ को उस स्थान पर बैठने में कामयाब रहा जहां मैं टेक्स्ट व्यू की ऊंचाई को स्थिर और विचित्र के रूप में सेट करना चाहता था जब तक कि यह केवल पाठ को मुश्किल से फिट न करे। मेरे मामले में, जिस फ़ॉन्ट शैली का मैं उपयोग कर रहा था उसकी ऊंचाई 64sp थी, इसलिए मैंने अपने टेक्स्टव्यू की ऊंचाई 50sp पर सेट की और यह ठीक काम किया। मुझे भी नीचे अग्रभूमि_ग्रैविटी सेट करना पड़ा।




बस डायनामिक माइंड के जवाब में जोड़ना चाहता था कि आपके टेक्स्ट व्यू के आस-पास की दूरी को देखने का कारण 9-पैच पृष्ठभूमि में पैडिंग है जो वे डिफ़ॉल्ट रूप से उपयोग करते हैं।

9-पैच तकनीक आपको एक सामग्री क्षेत्र निर्दिष्ट करने की अनुमति देती है जो प्रभावी रूप से पैडिंग है। उस पैडिंग का उपयोग तब तक किया जाता है जब तक कि आप दृश्य के पैडिंग को स्पष्ट रूप से सेट न करें। उदाहरण के लिए, जब आप प्रोग्रामेटिक रूप से 9-पैच पृष्ठभूमि को उस दृश्य में सेट करते हैं जिसमें पैडिंग सेट होते हैं, तो वे ओवरराइड होते हैं। और vise-versa, यदि आप पैडिंग सेट करते हैं तो वे 9-पैच पृष्ठभूमि द्वारा सेट किए गए ओवरराइड करते हैं।

दुर्भाग्यवश, एक्सएमएल लेआउट में इन परिचालनों के क्रम को निर्धारित करना संभव नहीं है। मुझे लगता है कि बस अपने टेक्स्ट व्यू से पृष्ठभूमि को हटाने में मदद मिलेगी:

android:background="@null"



मुझे एक ही समस्या का सामना करना पड़ा। यहां एक अच्छा जवाब दिया गया है: पाठ को टेक्स्टव्यू के शीर्ष पर कैसे संरेखित करें?

लेकिन कोड थोड़ा अधूरा है और सभी फ़ॉन्ट आकार का समर्थन नहीं करते हैं। रेखा बदलें

int additionalPadding = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 5, getContext().getResources().getDisplayMetrics());

सेवा मेरे

int additionalPadding = getTextSize() - getLineHeight();

पूरा सी # कोड (मोनो) शीर्ष ऑफ़सेट हटा देता है:

public class TextControl : TextView {
    public TextControl (Context context) : base (context)
    {
        SetIncludeFontPadding (false);
        Gravity = GravityFlags.Top;
    }

    protected override void OnDraw (Android.Graphics.Canvas canvas)
    {
        if (base.Layout == null)
            return;

        Paint.Color = new Android.Graphics.Color (CurrentTextColor);
        Paint.DrawableState = GetDrawableState ();

        canvas.Save ();

        var offset = TextSize - LineHeight;
        canvas.Translate (0, offset);

        base.Layout.Draw (canvas);

        canvas.Restore ();
    }
}



Links