मैं एंड्रॉइड टेक्स्टव्यू के चारों ओर एक सीमा कैसे डाल सकता हूं?


719

क्या एक टेक्स्टव्यू के चारों ओर एक सीमा खींचना संभव है?


मैंने एक गंदा समाधान यहां पोस्ट किया: stackoverflow.com/a/45242147/4291937
ग्रेगर ऑजबे

1
नीचे मेरा एक-लाइनर उत्तर देखें।
प्रोटीएन

जवाबों:


1273

आप दृश्य के लिए पृष्ठभूमि के रूप में एक आरेखनीय (एक आयत) सेट कर सकते हैं।

<TextView android:text="Some text" android:background="@drawable/back"/>

और आयताकार ड्रा करने योग्य बैक.xml (रेस / ड्रा करने योग्य फ़ोल्डर में डालें):

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
   <solid android:color="@android:color/white" />
   <stroke android:width="1dip" android:color="#4fa5d5"/>
</shape>

आप @android:color/transparentपारदर्शी पृष्ठभूमि के लिए ठोस रंग का उपयोग कर सकते हैं । आप पाठ को सीमा से अलग करने के लिए पैडिंग का भी उपयोग कर सकते हैं। अधिक जानकारी के लिए देखें: http://developer.android.com/guide/topics/resource/drawable-resource.html


83
क्या होगा अगर मैं सिर्फ शीर्ष सीमा चाहता हूं?
हैप्पीहार्डिक

19
@whyoz उनका तरीका पदानुक्रम को देखने के लिए अनावश्यक जटिलता जोड़ता है। उसकी विधि का उपयोग करने के लिए आपको दो अतिरिक्त दृश्य (ए लेआउट कंटेनर और सीमा दृश्य) की आवश्यकता होगी। इस प्रकार यदि आपके पास कई दृष्टिकोण हैं जिनसे आपको सीमा जोड़ने की आवश्यकता होती है, तो आपका दृश्य वृक्ष असहनीय हो जाएगा।
कोनस्टेंटिन बुरोव

5
@whyoz अभी तक इस पद्धति को शैलियों के माध्यम से लागू किया जा सकता है, जबकि योंगगू की विधि का इस तरह से उपयोग नहीं किया जा सकता है।
कोनस्टेंटिन बुरोव 28:13

12
केवल शीर्ष सीमा के लिए , इस प्रश्न को देखें ।
पैग

7
आप इस उपकरण का उपयोग चित्र बनाने के लिए http://shapes.softartstudio.com कर सकते हैं ।
अरदा बासोग्लू

186

मुझे कुछ अलग (गैर-प्रोग्रामेटिक) तरीकों का सारांश दें।

एक आकार का उपयोग करने योग्य

अपने ड्रा करने योग्य फ़ोल्डर में XML फ़ाइल के रूप में निम्न को सहेजें (उदाहरण के लिए, my_border.xml):

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <!-- View background color -->
    <solid
        android:color="@color/background_color" >
    </solid>

    <!-- View border color and width -->
    <stroke
        android:width="1dp"
        android:color="@color/border_color" >
    </stroke>

    <!-- The radius makes the corners rounded -->
    <corners
        android:radius="2dp"   >
    </corners>

</shape>

तो बस इसे अपने TextView की पृष्ठभूमि के रूप में सेट करें:

<TextView
    android:id="@+id/textview1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/my_border" />

और अधिक सहायता:

9-पैच का उपयोग करना

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

<TextView
    android:id="@+id/textview1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/my_ninepatch_image" />

यहां कुछ लिंक दिए गए हैं जो यह बताएंगे कि 9-पैच छवि कैसे बनाएं:

क्या होगा अगर मैं सिर्फ शीर्ष सीमा चाहता हूं?

एक परत-सूची का उपयोग करना

आप एक दूसरे के ऊपर दो आयतों को ढेर करने के लिए एक परत सूची का उपयोग कर सकते हैं। दूसरी आयत को पहले आयत से थोड़ा छोटा करके, आप एक सीमा प्रभाव बना सकते हैं। पहला (निचला) आयत सीमा रंग है और दूसरा आयत पृष्ठभूमि रंग है।

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Lower rectangle (border color) -->
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@color/border_color" />
        </shape>
    </item>

    <!-- Upper rectangle (background color) -->
    <item android:top="2dp">
        <shape android:shape="rectangle">
            <solid android:color="@color/background_color" />
        </shape>
    </item>
</layer-list>

android:top="2dp"2dp द्वारा शीर्ष को सेट करना (इसे छोटा बनाता है)। यह पहली (निचली) आयत को सीमा प्रभाव देते हुए दिखाने की अनुमति देता है। आप इसे TextView बैकग्राउंड पर उसी तरह से लागू कर सकते हैं जिस तरह से shapeड्रॉबल ऊपर किया गया था।

परत सूचियों के बारे में कुछ और लिंक इस प्रकार हैं:

9-पैच का उपयोग करना

आप बस एक ही बॉर्डर के साथ 9-पैच छवि बना सकते हैं। बाकी सब वही है जो ऊपर चर्चा में है।

एक दृश्य का उपयोग करना

यह एक तरह का ट्रिक है लेकिन यह अच्छी तरह से काम करता है अगर आपको दो व्यूज़ या बॉर्डर से एक सिंगल टेक्स्ट व्यू के बीच एक सेपरेटर जोड़ने की आवश्यकता हो।

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

    <TextView
        android:id="@+id/textview1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <!-- This adds a border between the TextViews -->
    <View
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:background="@android:color/black" />

    <TextView
        android:id="@+id/textview2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

यहाँ कुछ और लिंक दिए गए हैं:


24
भगवान यार, यह जटिल border: 1px solid #999;नहीं माना जाता है।
23

क्या होगा यदि मैं टेक्स्टव्यू की सीमा चाहता हूं, जिसमें छाया और लहर प्रभाव भी है?
आकाश दुबे

@AkashDubey, क्षमा करें, मैंने पहले ऐसा नहीं किया है। मेरा सुझाव है कि आप प्रत्येक को अलग-अलग आज़माएँ और फिर उन्हें संयोजित करें। यदि आप फंस जाते हैं, तो स्टैक ओवरफ्लो पर एक नया प्रश्न पूछें।
सुरगाच

49

सरल तरीका यह है कि आप अपने टेक्स्ट व्यू के लिए एक दृश्य जोड़ सकते हैं। नीचे की सीमा रेखा के लिए उदाहरण:

<LinearLayout android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent">
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"
        android:text="@string/title"
        android:id="@+id/title_label"
        android:gravity="center_vertical"/>
    <View
        android:layout_width="fill_parent"
        android:layout_height="0.2dp"
        android:id="@+id/separator"
        android:visibility="visible"
        android:background="@android:color/darker_gray"/>

</LinearLayout>

अन्य दिशा सीमाओं के लिए, कृपया विभाजक दृश्य के स्थान को समायोजित करें।


3
मेरे अनुभव के लिए यह समाधान, पुराने उपकरणों पर, ऐप प्रदर्शन पर एक शांत दृश्य प्रभाव है।
रॉबर्टो लोम्बार्दिनी

43
मुद्रास्फीति के दृष्टिकोण से यह एक भयानक समाधान है। आप 3 नए दृश्य तत्वों को बनाने और देखने पदानुक्रम गहराई में एक और स्तर जोड़ने
फिलिप

मुद्रास्फीति के दृष्टिकोण के अनुसार सबसे खराब समाधान, जैसा कि दीक्षा ने कहा है। क्या आप जानते हैं कि textView के पास केवल करने के लिए विशिष्ट xml टैग होता है: अपने TextView को बाएँ / दाएँ / ऊपर / नीचे खींचने के लिए एक चित्र परिभाषित करें, और उन्हें Android के रूप में जाना जाता है: drawable ****
Mathias Seguy Android2ee

32

मैंने टेक्स्टव्यू का विस्तार करके और मैन्युअल रूप से बॉर्डर खींचकर इस मुद्दे को हल किया है। मैंने यह भी जोड़ा ताकि आप चुन सकें कि कोई बॉर्डर बिंदीदार है या धराशायी।

public class BorderedTextView extends TextView {
        private Paint paint = new Paint();
        public static final int BORDER_TOP = 0x00000001;
        public static final int BORDER_RIGHT = 0x00000002;
        public static final int BORDER_BOTTOM = 0x00000004;
        public static final int BORDER_LEFT = 0x00000008;

        private Border[] borders;

        public BorderedTextView(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            init();
        }

        public BorderedTextView(Context context, AttributeSet attrs) {
            super(context, attrs);
            init();
        }

        public BorderedTextView(Context context) {
            super(context);
            init();
        }
        private void init(){
            paint.setStyle(Paint.Style.STROKE);
            paint.setColor(Color.BLACK);
            paint.setStrokeWidth(4);        
        }
        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            if(borders == null) return;

            for(Border border : borders){
                paint.setColor(border.getColor());
                paint.setStrokeWidth(border.getWidth());

                if(border.getStyle() == BORDER_TOP){
                    canvas.drawLine(0, 0, getWidth(), 0, paint);                
                } else
                if(border.getStyle() == BORDER_RIGHT){
                    canvas.drawLine(getWidth(), 0, getWidth(), getHeight(), paint);
                } else
                if(border.getStyle() == BORDER_BOTTOM){
                    canvas.drawLine(0, getHeight(), getWidth(), getHeight(), paint);
                } else
                if(border.getStyle() == BORDER_LEFT){
                    canvas.drawLine(0, 0, 0, getHeight(), paint);
                }
            }
        }

        public Border[] getBorders() {
            return borders;
        }

        public void setBorders(Border[] borders) {
            this.borders = borders;
        }
}

और सीमा वर्ग:

public class Border {
    private int orientation;
    private int width;
    private int color = Color.BLACK;
    private int style;
    public int getWidth() {
        return width;
    }
    public void setWidth(int width) {
        this.width = width;
    }
    public int getColor() {
        return color;
    }
    public void setColor(int color) {
        this.color = color;
    }
    public int getStyle() {
        return style;
    }
    public void setStyle(int style) {
        this.style = style;
    }
    public int getOrientation() {
        return orientation;
    }
    public void setOrientation(int orientation) {
        this.orientation = orientation;
    }
    public Border(int Style) {
        this.style = Style;
    }
}

आशा है कि यह किसी की मदद करता है :)


बॉर्डर को इनिशियलाइज़ कैसे करें?
जियोनी

यह सही ढंग से काम नहीं कर सकता, क्योंकि कोड दिखाता है कि यह परिभाषित मूल्य के आधे आकार में सीमाओं को खींचता है
ucMedia

14

मैं बस एक समान जवाब देख रहा था - यह एक स्ट्रोक और निम्नलिखित ओवरराइड के साथ किया जा सकता है:

@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {

Paint strokePaint = new Paint();
strokePaint.setARGB(255, 0, 0, 0);
strokePaint.setTextAlign(Paint.Align.CENTER);
strokePaint.setTextSize(16);
strokePaint.setTypeface(Typeface.DEFAULT_BOLD);
strokePaint.setStyle(Paint.Style.STROKE);
strokePaint.setStrokeWidth(2);

Paint textPaint = new Paint();
textPaint.setARGB(255, 255, 255, 255);
textPaint.setTextAlign(Paint.Align.CENTER);
textPaint.setTextSize(16);
textPaint.setTypeface(Typeface.DEFAULT_BOLD);

canvas.drawText("Some Text", 100, 100, strokePaint);
canvas.drawText("Some Text", 100, 100, textPaint);

super.draw(canvas, mapView, shadow); 
}

महान! मेरी एकमात्र चिंता यह है कि जब मैं फोन पर और एमुलेटर में, ड्राड्राउंड रेक्ट का उपयोग करता हूं, तो कोनों में स्ट्रोक बदसूरत है।
इरेडमस्टर

1
@erdomester शायद पेंट StrokePaint = नया पेंट (Paint.ANTI_ALIAS_FLAG); "कोनों पर बदसूरत" मुद्दे को हल करेगा
पी-आरएडी

14

आप बॉर्डर को दो तरीकों से सेट कर सकते हैं। एक ड्रॉबल द्वारा है और दूसरा प्रोग्रामेटिक है।

दराज का उपयोग करना

<shape>
    <solid android:color="@color/txt_white"/>
    <stroke android:width="1dip" android:color="@color/border_gray"/>
    <corners android:bottomLeftRadius="10dp"
             android:bottomRightRadius="0dp"
             android:topLeftRadius="10dp"
             android:topRightRadius="0dp"/>
    <padding android:bottom="0dip"
             android:left="0dip"
             android:right="0dip"
             android:top="0dip"/>
</shape>

प्रोग्रामेटिक


public static GradientDrawable backgroundWithoutBorder(int color) {

    GradientDrawable gdDefault = new GradientDrawable();
    gdDefault.setColor(color);
    gdDefault.setCornerRadii(new float[] { radius, radius, 0, 0, 0, 0,
                                           radius, radius });
    return gdDefault;
}

XML का वह आकार textView से कैसे संबंधित होगा?
2042 पर नियो 42

14

सबसे सरल समाधान जो मैंने पाया है (और जो वास्तव में काम करता है):

<TextView
    ...
    android:background="@android:drawable/editbox_background" />

क्या एक ही स्थान से सभी पाठ्यपुस्तकों पर इसे लागू करना संभव है?
इयान वारबर्टन

एक जल्दी के लिए अच्छा है। लेकिन रनिंग डिवाइस के संस्करण के आधार पर, इसके बहुत ही असामान्य प्रभाव हो सकते हैं। इसका कारण यह है कि Google बदलता रहता है कि EditTexts कैसे दिखते हैं (आप फैशन में बने रहेंगे!)
स्कॉट बिग्स

11

मुझे टेक्स्ट व्यू के चारों ओर बॉर्डर लगाने का एक बेहतर तरीका मिला।

पृष्ठभूमि के लिए नौ-पैच छवि का उपयोग करें। यह बहुत आसान है, एसडीके 9-पैच छवि बनाने के लिए एक उपकरण के साथ आता है, और इसमें बिल्कुल नहीं है कोडिंग ।

लिंक http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch है


2
उपयोगी, हाँ, लेकिन यह कैसे बेहतर है?
समुच्चय

2
एक आकृति का उपयोग करते हुए स्वीकार किए गए उत्तर के अनुसार 9-पैच से बेहतर है, एक XML फ़ाइल एक ग्राफिक संपत्ति की तुलना में अधिक लचीली है
जोस_GD

निश्चित रूप से, यदि आप उन ग्राफिक्स बनाने के लिए सीमित होना चाहते हैं जिन्हें आप प्रोग्रामेटिक रूप से चाहते हैं, तो यह अधिक लचीला है।
निक

2
आकार-दृष्टिकोण बेकार है। मैं केवल एक ही अनुभव कर रहा हूं, कि टैग "ठोस" हमेशा संसाधित हो जाता है, भले ही पारदर्शी या सेट करने के लिए कोई फर्क नहीं पड़ता। और अगर मैं एक बोर्ड बनाना चाहता हूं, तो मेरा मतलब है, एक बोर्डर और नहीं रंगीन भीतरी और अन्यथा रंगीन सीमा के साथ एक आयत। और यह पारदर्शी ठोस है। यह हमेशा रंग को परेशान करता है। साथ ही, एक वर्ग, जिसे दूसरे से विरासत में मिला है, के पास भी सभी विशेषताएं होनी चाहिए, क्योंकि यह विरासत में मिली है। वास्तव में समझ में नहीं आता है, प्राथमिक ओओ-डिजाइन-दिशानिर्देश एंड्रॉइड द्वारा क्यों तोड़े गए हैं। उदाहरण के लिए, मुझे बटन से विरासत में मिला है। सभी सुविधाएँ चली गईं। क्यों ?
icbytes

2
@ जरमी दृश्य धीमा? आप इसे कैसे देखते हैं?
इगोरगानापोलस्की

11

आप अपने कोड में ऐसा कुछ जोड़ सकते हैं:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle" >
    <solid android:color="#ffffff" />
    <stroke android:width="1dip" android:color="#4fa5d5"/>
</shape>

स्ट्रोक क्यों जरूरी है?
इगोरगानापोलस्की

@IgorGanapolsky, स्ट्रोक वास्तविक सीमा बनाते हैं?
ताश पेमहिवा

10

गोल कोनों बनाने के लिए नीचे दिए गए लिंक की जाँच करें http://androidcookbook.com/Recipe.seam?recipeId=2318

एक एंड्रॉइड प्रोजेक्ट में ड्रॉ करने योग्य फ़ोल्डर, रेस के तहत, बिटमैप (पीएनजी या जेपीजी फाइलों) तक ही सीमित नहीं है, लेकिन यह एक्सएमएल फाइलों में परिभाषित आकार भी पकड़ सकता है।

फिर इन आकृतियों को परियोजना में पुन: उपयोग किया जा सकता है। किसी लेआउट के चारों ओर बॉर्डर लगाने के लिए एक आकृति का उपयोग किया जा सकता है। यह उदाहरण घुमावदार कोनों के साथ एक आयताकार सीमा दिखाता है। Customborder.xml नामक एक नई फ़ाइल को ड्रा करने योग्य फ़ोल्डर में बनाया गया है (ग्रहण में फ़ाइल मेनू का उपयोग करें और फ़ाइल के नाम में ड्रा करने योग्य फ़ोल्डर चयनित प्रकार के साथ नया और फ़ाइल का चयन करें, समाप्त करें पर क्लिक करें)।

बॉर्डर को परिभाषित करने वाले XML में प्रवेश किया गया है:

<?xml version="1.0" encoding="UTF-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <corners android:radius="20dp"/>
    <padding android:left="10dp" android:right="10dp" android:top="10dp" android:bottom="10dp"/>
    <solid android:color="#CCCCCC"/>
</shape>

विशेषता android:shapeआयत पर सेट है (आकार फाइलें भी अंडाकार, रेखा और अंगूठी का समर्थन करती हैं)। आयत डिफ़ॉल्ट मान है, इसलिए यदि यह आयत परिभाषित किया जा रहा है तो इस विशेषता को छोड़ दिया जा सकता है। आकार फ़ाइल की विस्तृत जानकारी के लिए http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape पर आकृतियों पर Android दस्तावेज़ देखें ।

एलिमेंट कॉर्नर आयत कोनों को गोल करने के लिए सेट करता है। प्रत्येक कोने पर एक अलग त्रिज्या सेट करना संभव है (Android संदर्भ देखें)।

पैडिंग विशेषताओं का उपयोग व्यू की सामग्री को स्थानांतरित करने के लिए किया जाता है, जिसमें आकृति को लागू किया जाता है, ताकि सीमा को ओवरलैप करने वाली सामग्री को रोका जा सके।

यहां बॉर्डर का रंग हल्का ग्रे (CCCCCC हेक्साडेसिमल RGB मान) पर सेट है।

आकृतियाँ भी ढालों का समर्थन करती हैं, लेकिन यहाँ इसका उपयोग नहीं किया जा रहा है। फिर से, एंड्रॉइड संसाधनों को देखने के लिए देखें कि एक ढाल कैसे परिभाषित किया गया है। आकृति का उपयोग करके छंटनी पर लागू किया जाता हैandroid:background="@drawable/customborder"

लेआउट के भीतर अन्य विचारों को सामान्य रूप से जोड़ा जा सकता है। इस उदाहरण में, एक एकल TextView जोड़ा गया है, और पाठ सफेद है (FFFFFF हेक्साडेसिमल RGB)। पृष्ठभूमि को नीले रंग में सेट किया गया है, साथ ही चमक को कम करने के लिए कुछ पारदर्शिता (A00000FF हेक्साडेसिमल अल्फा आरजीबी मूल्य)। अंत में लेआउट को स्क्रीन किनारे से ऑफसेट किया जाता है और इसे थोड़ी मात्रा में पैडिंग के साथ दूसरे लेआउट में रखा जाता है। पूर्ण लेआउट फ़ाइल इस प्रकार है:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:padding="5dp">
    <LinearLayout android:orientation="vertical"
                  android:layout_width="fill_parent"
                  android:layout_height="fill_parent"
                  android:background="@drawable/customborder">
        <TextView android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:text="Text View"
                android:textSize="20dp"
                android:textColor="#FFFFFF"
                android:gravity="center_horizontal"
                android:background="#A00000FF" />
    </LinearLayout>
</LinearLayout>

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

8

मेरे पास इसे बहुत सरलता से करने का एक तरीका है, और मैं इसे साझा करना चाहूंगा।

जब मैं mi TextViews को स्क्वायर करना चाहता हूं, तो मैं उन्हें सिर्फ एक LinearLayout में डाल देता हूं। मैंने अपने रैखिक रंग की पृष्ठभूमि का रंग निर्धारित किया है, और मैं अपने पाठ दृश्य में एक मार्जिन जोड़ता हूं। परिणाम बिल्कुल वैसा ही है जैसे आप टेक्स्ट व्यू को चौकोर करते हैं।


2

मेरे मामले में काम नहीं करने के कारण कोंस्टेंटिन ब्यूरोव जवाब बदलना:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@android:color/white" />
            <stroke android:width="2dip" android:color="#4fa5d5"/>
            <corners android:radius="7dp"/>
        </shape>
    </item>
</selector>

compileSdkVersion 26 (Android 8.0), minSdkVersion 21 (Android 5.0), targetSdkVersion 26, कार्यान्वयन 'com.android.support:appcompat-v7:26.1.0', grad: 4.1


2

आप अपने पाठ दृश्य के लिए कस्टम पृष्ठभूमि बना सकते हैं। चरण 1. अपनी परियोजना पर जाएं। 2. संसाधनों पर जाएं और ड्रा करने योग्य पर राइट क्लिक करें। 3. New -> Drawable Resource File पर क्लिक करें। आपको फाइल का नाम दिया जाए। 5. फाइल में दिए गए कोड को पेस्ट करें

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="1dp" android:color="@color/colorBlack" />
<padding android:left="1dp"
    android:top="1dp"
    android:right="1dp"
    android:bottom="1dp" />
<corners android:radius="6dp" />
<solid android:color="#ffffffff" />

  1. अपने पाठ दृश्य के लिए जहां आप इसे बैकग्राउड के रूप में उपयोग करना चाहते हैं,

    एंड्रॉयड: पृष्ठभूमि = "@ drawable / your_fileName"


1

यहाँ मेरा 'सरल' सहायक वर्ग है जो बॉर्डर के साथ एक ImageView देता है। बस इसे अपने बर्तनों के फ़ोल्डर में छोड़ दें, और इसे इस तरह से कॉल करें:

ImageView selectionBorder = BorderDrawer.generateBorderImageView(context, borderWidth, borderHeight, thickness, Color.Blue);

यहाँ कोड है।

/**
 * Because creating a border is Rocket Science in Android.
 */
public class BorderDrawer
{
    public static ImageView generateBorderImageView(Context context, int borderWidth, int borderHeight, int borderThickness, int color)
    {
        ImageView mask = new ImageView(context);

        // Create the square to serve as the mask
        Bitmap squareMask = Bitmap.createBitmap(borderWidth - (borderThickness*2), borderHeight - (borderThickness*2), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(squareMask);

        Paint paint = new Paint();
        paint.setStyle(Paint.Style.FILL);
        paint.setColor(color);
        canvas.drawRect(0.0f, 0.0f, (float)borderWidth, (float)borderHeight, paint);

        // Create the darkness bitmap
        Bitmap solidColor = Bitmap.createBitmap(borderWidth, borderHeight, Bitmap.Config.ARGB_8888);
        canvas = new Canvas(solidColor);

        paint.setStyle(Paint.Style.FILL);
        paint.setColor(color);
        canvas.drawRect(0.0f, 0.0f, borderWidth, borderHeight, paint);

        // Create the masked version of the darknessView
        Bitmap borderBitmap = Bitmap.createBitmap(borderWidth, borderHeight, Bitmap.Config.ARGB_8888);
        canvas = new Canvas(borderBitmap);

        Paint clearPaint = new Paint();
        clearPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));

        canvas.drawBitmap(solidColor, 0, 0, null);
        canvas.drawBitmap(squareMask, borderThickness, borderThickness, clearPaint);

        clearPaint.setXfermode(null);

        ImageView borderView = new ImageView(context);
        borderView.setImageBitmap(borderBitmap);

        return borderView;
    }
}

मैं कैसे उपयोग selectionBorderकरूं?
ताश पेमहिवा

@ टैशपीमहवा बटन.सेटबेकग्राउंडड्राएबल ();
निंजाऑनसफारी

0

यह आपकी मदद कर सकता है।

<RelativeLayout
    android:id="@+id/textbox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:background="@android:color/darker_gray" >

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:layout_margin="3dp"
        android:background="@android:color/white"
        android:gravity="center"
        android:text="@string/app_name"
        android:textSize="20dp" />

</RelativeLayout

0

बॉर्डर के रंग और आपके टेक्स्ट दृश्य के आकार के रूप में पृष्ठभूमि रंग के साथ एक सीमा दृश्य बनाएं। सीमा की चौड़ाई के रूप में सीमा दृश्य पैडिंग सेट करें। टेक्स्ट व्यू बैकग्राउंड कलर सेट करें जैसा कि आप टेक्स्ट व्यू के लिए चाहते हैं। अब अपने टेक्स्ट व्यू को बॉर्डर व्यू के अंदर जोड़ें।



0

टेक्स्ट व्यू में बॉर्डर जोड़ने के कई तरीके हैं। सबसे सरल एक कस्टम ड्रॉबल बनाकर उसे android:background="@drawable/textview_bg"अपने टेक्स्ट व्यू के लिए सेट करना है ।

Textview_bg.xml ड्रॉबल्स के तहत जाएगा और ऐसा कुछ हो सकता है। तुम एक हो सकता है solidया एक gradientपृष्ठभूमि (या कुछ भी नहीं करता है, तो आवश्यक नहीं), cornersएक कोने दायरा जोड़ने के लिए औरstroke सीमा को जोड़ने के लिए।

textview_bg.xml

<?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">

        <corners
            android:radius="@dimen/dp_10"/>

        <gradient
            android:angle="225"
            android:endColor="#FFFFFF"
            android:startColor="#E0E0E0" />

        <stroke
            android:width="2dp"
            android:color="#000000"/>

    </shape>

0
  <View
    android:layout_width="match_parent"
    android:layout_height="2dp"
    android:background="@android:color/black" />

इस कोड को आप जहाँ चाहे वहाँ रख सकते हैं


0

अपने xml टेक्स्टव्यू पर setBackground,

अपनी drawable निर्देशिका में rounded_textview.xml फ़ाइल जोड़ें।

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
   <solid android:color="@android:color/white" />
   <stroke android:width="2dip" android:color="#4f5g52"/>
</shape>

textView पृष्ठभूमि में ड्रा करने योग्य फ़ाइल सेट करें।


-1

वास्तव में, यह बहुत सरल है। यदि आप Textview के पीछे एक साधारण ब्लैक आयत चाहते हैं, तो बस TextView android:background="@android:color/black"टैग्स में जोड़ें । ऐशे ही:

<TextView
    android:textSize="15pt" android:textColor="#ffa7ff04"
    android:layout_alignBottom="@+id/webView1"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:background="@android:color/black"/>

वह पूरी पृष्ठभूमि नहीं सीमा के लिए पूछते हैं।
गाय
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.