Làm cách nào để đặt đường viền xung quanh văn bản Android?


Câu trả lời:


1274

Bạn có thể đặt hình dạng có thể vẽ (hình chữ nhật) làm nền cho chế độ xem.

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

Và back.xml hình chữ nhật có thể vẽ được (đặt vào thư mục res / drawable):

<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>

Bạn có thể sử dụng @android:color/transparentcho màu đơn sắc để có một nền trong suốt. Bạn cũng có thể sử dụng phần đệm để tách văn bản khỏi viền. để biết thêm thông tin, hãy xem: http://developer.android.com/guide/topics/resource/drawable-resource.html


83
Nếu tôi chỉ muốn đường viền trên cùng thì sao?
happyhardik

19
@whyoz Phương pháp của anh ấy thêm sự phức tạp không cần thiết để xem phân cấp. Bạn sẽ cần hai chế độ xem bổ sung (Một thùng chứa bố cục và chế độ xem viền) để sử dụng phương thức của mình. Do đó, nếu bạn có nhiều khung nhìn bạn cần thêm đường viền vào, cây xem của bạn sẽ phát triển không thể quản lý được.
Konstantin Burov

5
@whyoz nhưng phương pháp này có thể được áp dụng thông qua các kiểu một chủ đề, trong khi phương pháp của YongGu không thể được sử dụng theo cách này.
Konstantin Burov

12
Đối với chỉ biên giới hàng đầu , xem câu hỏi này .
Pang

7
Bạn có thể sử dụng công cụ này http://shapes.softartstudio.com để tạo các drawable.
Arda Basoglu

187

Hãy để tôi tóm tắt một vài phương pháp khác nhau (không lập trình).

Sử dụng một hình dạng có thể vẽ

Lưu tệp dưới đây dưới dạng tệp XML trong thư mục có thể vẽ của bạn (ví dụ: 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>

Sau đó, chỉ cần đặt nó làm nền cho TextView của bạn:

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

Giúp đỡ nhiều hơn:

Sử dụng bản vá 9

Một bản vá 9 là một hình ảnh nền có thể kéo dài. Nếu bạn tạo một hình ảnh với một đường viền thì nó sẽ cung cấp cho TextView của bạn một đường viền. Tất cả những gì bạn cần làm là tạo hình ảnh và sau đó đặt nó vào nền trong TextView của bạn.

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

Dưới đây là một số liên kết sẽ hiển thị cách tạo hình ảnh 9 miếng:

Nếu tôi chỉ muốn đường viền trên cùng thì sao?

Sử dụng danh sách lớp

Bạn có thể sử dụng danh sách lớp để xếp chồng hai hình chữ nhật lên nhau. Bằng cách làm cho hình chữ nhật thứ hai chỉ nhỏ hơn một chút so với hình chữ nhật thứ nhất, bạn có thể tạo hiệu ứng viền. Hình chữ nhật đầu tiên (dưới) là màu viền và hình chữ nhật thứ hai là màu nền.

<?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>

Đặt android:top="2dp"bù đắp đỉnh (làm cho nó nhỏ hơn) 2dp. Điều này cho phép hình chữ nhật đầu tiên (thấp hơn) hiển thị xuyên qua, tạo hiệu ứng viền. Bạn có thể áp dụng điều này cho nền TextView giống như cách mà shapedrawable đã được thực hiện ở trên.

Dưới đây là một số liên kết về danh sách lớp:

Sử dụng bản vá 9

Bạn chỉ có thể tạo một hình ảnh 9 miếng với một đường viền duy nhất. Mọi thứ khác giống như đã thảo luận ở trên.

Sử dụng Chế độ xem

Đây là một mẹo nhỏ nhưng nó hoạt động tốt nếu bạn cần thêm một ngăn cách giữa hai chế độ xem hoặc đường viền vào một TextView.

<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>

Dưới đây là một số liên kết khác:


24
Jeez man, a border: 1px solid #999;không phải là phức tạp này .
Achshar

Điều gì sẽ xảy ra nếu tôi muốn đường viền của textview, cũng có hiệu ứng bóng và gợn?
Akash Dubey

@AkashDubey, Xin lỗi, tôi chưa làm điều đó trước đây. Tôi đề nghị bạn thử từng cái một cách riêng biệt và sau đó kết hợp chúng. Nếu bạn gặp khó khăn, hãy hỏi một câu hỏi mới về Stack Overflow.
Suragch 16/03/18

49

Cách đơn giản là thêm chế độ xem cho TextView của bạn. Ví dụ cho đường viền dưới cùng:

<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>

Đối với các đường viền hướng khác, vui lòng điều chỉnh vị trí của khung nhìn dải phân cách.


3
Đối với trải nghiệm của tôi, giải pháp này, trên các thiết bị cũ, có tác động rõ rệt đến hiệu suất ứng dụng.
Roberto Lombardini

43
Đây là một giải pháp khủng khiếp từ góc độ lạm phát. Bạn tạo 3 yếu tố chế độ xem mới và thêm một cấp độ nữa theo chiều sâu phân cấp chế độ xem
philipp

Giải pháp tồi tệ nhất vì quan điểm lạm phát như philipp nói. Bạn có biết rằng textView có thẻ xml cụ thể để thực hiện điều đó không: xác định một hình ảnh được vẽ trái / phải / trên / dưới tạo ra TextView của bạn và chúng được gọi là android: drawable ****
Mathias Seguy Android2ee

32

Tôi đã giải quyết vấn đề này bằng cách mở rộng textview và vẽ đường viền bằng tay. Tôi thậm chí đã thêm để bạn có thể chọn nếu một đường viền được chấm hoặc nét đứt.

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;
        }
}

Và lớp biên giới:

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;
    }
}

Hy vọng điều này sẽ giúp được ai đó :)


Làm thế nào để khởi tạo đường viền?
zionpi

Nó không thể hoạt động chính xác, vì mã cho thấy nó vẽ các đường viền ở một nửa kích thước của giá trị được xác định
ucMedia

14

Tôi chỉ nhìn vào một câu trả lời tương tự-- nó có thể được thực hiện bằng Stroke và ghi đè sau:

@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); 
}

Tuyệt quá! Mối quan tâm duy nhất của tôi là đột quỵ xấu ở các góc khi tôi sử dụng drawRoundRect, cả trên điện thoại và trong trình giả lập.
erdomester

1
@erdomester Có lẽ Sơn StrokePaint = Sơn mới (Paint.ANTI_ALIAS_FLAG); sẽ giải quyết vấn đề "xấu xí ở các góc"
P-RAD

14

Bạn có thể đặt đường viền bằng hai phương pháp. Một là bởi drawable và thứ hai là lập trình.

Sử dụng Drawable

<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>

Lập trình


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;
}

Làm thế nào mà hình dạng XML có liên quan đến textView?
Neo42

14

Giải pháp đơn giản nhất tôi đã tìm thấy (và thực sự hoạt động):

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

Có thể áp dụng điều này cho tất cả các bài phỏng vấn từ một nơi?
Ian Warburton

Đẹp cho một quickie. Nhưng tùy thuộc vào phiên bản của thiết bị đang chạy, điều này có thể có những hiệu ứng rất bất thường. Điều này là do Google liên tục thay đổi giao diện của EditTexts (bạn phải giữ thời trang!)
Scott Biggie

11

Tôi đã tìm thấy một cách tốt hơn để đặt một đường viền xung quanh TextView.

Sử dụng một hình ảnh chín miếng cho nền. Điều này khá đơn giản, SDK đi kèm với một công cụ để tạo hình ảnh 9 bản vá và hoàn toàn không cần mã hóa.

Liên kết là http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch .


2
Hữu ích, có, nhưng làm thế nào là tốt hơn?
tổng

2
Sử dụng hình dạng như câu trả lời được chấp nhận cho biết tốt hơn so với bản vá 9, tệp XML linh hoạt hơn tài sản đồ họa
Jose_GD

Chắc chắn, nếu bạn muốn được giới hạn trong việc tạo đồ họa bạn muốn lập trình, thì nó linh hoạt hơn.
Nick

2
Cách tiếp cận hình dạng là vô ích. Tôi là người duy nhất gặp phải, thẻ "solid" luôn được xử lý, bất kể là được đặt trong suốt hay không. Và nếu tôi muốn tạo BORDER, ý tôi là, BORDER chứ không phải một hình chữ nhật với các đường viền màu bên trong và màu khác. Và nó KHÔNG BAO GIỜ trong suốt. Nó luôn làm xáo trộn màu sắc. Ngoài ra, một lớp, kế thừa từ lớp khác, cũng nên có tất cả các tính năng, bởi vì nó được kế thừa. thực sự không thể hiểu được, tại sao các hướng dẫn thiết kế OO cơ bản bị phá vỡ bởi Android. Ví dụ, tôi được thừa hưởng từ nút. Tất cả các tính năng đã biến mất. Tại sao ?
icbyte

2
@Jeremie Rõ ràng chậm hơn? Làm thế nào để bạn quan sát nó?
IgorGanapolsky

11

Bạn có thể thêm một cái gì đó như thế này trong mã của bạn:

<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>

Tại sao đột quỵ là cần thiết?
IgorGanapolsky

@IgorGanapolsky, đột quỵ tạo đường viền thực tế?
Tash Pemhiwa

10

Kiểm tra liên kết dưới đây để tạo các góc tròn http://androidcookbook.com/Recipe.seam?recipeId=2318

Thư mục drawable, dưới độ phân giải, trong dự án Android không bị giới hạn ở bitmap (tệp PNG hoặc JPG), nhưng nó cũng có thể giữ các hình dạng được xác định trong tệp XML.

Những hình dạng này sau đó có thể được tái sử dụng trong dự án. Một hình có thể được sử dụng để đặt một đường viền xung quanh một bố cục. Ví dụ này cho thấy một đường viền hình chữ nhật với các góc cong. Một tệp mới có tên customborder.xml được tạo trong thư mục drawable (trong Eclipse sử dụng menu File và chọn New rồi File, với loại thư mục drawable được chọn trong tên tệp và nhấn vào Kết thúc).

XML xác định hình dạng đường viền được nhập:

<?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>

Thuộc tính android:shapeđược đặt thành hình chữ nhật (tệp hình dạng cũng hỗ trợ hình bầu dục, đường và vòng). Hình chữ nhật là giá trị mặc định, vì vậy thuộc tính này có thể bị bỏ qua nếu nó là hình chữ nhật được xác định. Xem tài liệu Android về hình dạng tại http://developer.android.com/guide/topics/resource/drawable-resource.html#Shape để biết thông tin chi tiết về tệp hình dạng.

Các góc phần tử đặt các góc hình chữ nhật được làm tròn. Có thể đặt bán kính khác nhau trên mỗi góc (xem tài liệu tham khảo Android).

Các thuộc tính đệm được sử dụng để di chuyển nội dung của Chế độ xem được áp dụng cho hình dạng, để ngăn nội dung chồng lên đường viền.

Màu đường viền ở đây được đặt thành màu xám nhạt (giá trị thập lục phân CCCCCC).

Hình dạng cũng hỗ trợ độ dốc, nhưng điều đó không được sử dụng ở đây. Một lần nữa, hãy xem tài nguyên Android để xem cách xác định độ dốc. Hình dạng được áp dụng cho bố cục sử dụng android:background="@drawable/customborder".

Trong bố cục, các khung nhìn khác có thể được thêm vào như bình thường. Trong ví dụ này, một TextView duy nhất đã được thêm vào và văn bản có màu trắng (FFFFFF hexadecimal RGB). Nền được đặt thành màu xanh lam, cộng với một số độ trong suốt để giảm độ sáng (giá trị alpha RGB thập lục phân A00000FF). Cuối cùng, bố cục được bù từ cạnh màn hình bằng cách đặt nó vào một bố cục khác với một lượng nhỏ phần đệm. Do đó, tập tin bố trí đầy đủ là:

<?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>

Câu trả lời chỉ liên kết được khuyến khích cao, vì các liên kết có xu hướng bị phá vỡ tại một số điểm trong tương lai. Kéo các phần có liên quan của liên kết của bạn vào câu trả lời này để thông tin vẫn có sẵn, ngay cả khi liên kết không có.
Andy

8

Tôi có một cách để làm điều đó rất đơn giản và tôi muốn chia sẻ nó.

Khi tôi muốn vuông mi TextViews, tôi chỉ cần đặt chúng vào linearLayout. Tôi đặt màu nền của linearLayout của mình và tôi thêm một lề vào TextView của mình. Kết quả chính xác như thể bạn bình phương TextView.


2

Thay đổi câu trả lời của Konstantin Burov vì không hoạt động trong trường hợp của tôi:

<?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, triển khai 'com.android.support:appcompat-v7:26.1.0', gradle: 4.1


2

Bạn có thể tạo nền tùy chỉnh cho chế độ xem văn bản của bạn. Các bước 1. Đi đến dự án của bạn. 2. Chuyển đến tài nguyên và nhấp chuột phải để vẽ. 3. Nhấp vào Mới -> Tệp tài nguyên có thể vẽ 4. Đặt tên cho tệp của bạn 5. Dán mã sau vào tệp

<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. Đối với chế độ xem văn bản của bạn, nơi bạn muốn sử dụng nó làm backgroud,

    android: nền = "@ drawable / your_fileName"


1

Đây là lớp trình trợ giúp 'đơn giản' của tôi trả về ImageView có viền. Chỉ cần thả cái này vào thư mục utils của bạn và gọi nó như thế này:

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

Đây là mã.

/**
 * 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;
    }
}

Làm thế nào để tôi sử dụng selectionBorder?
Tash Pemhiwa

@TashPemhiwa Nút.setBackgroundDrawable ();
NinjaOnSafari

0

Điều này có thể giúp bạn.

<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

Tạo chế độ xem đường viền với màu nền là màu của đường viền và kích thước của chế độ xem văn bản của bạn. đặt phần đệm xem viền là chiều rộng của viền. Đặt màu nền của chế độ xem văn bản làm màu bạn muốn cho chế độ xem văn bản. Bây giờ thêm chế độ xem văn bản của bạn bên trong chế độ xem viền.


0

Thử cái này:

<shape>
    <solid android:color="@color/txt_white"/>
    <stroke android:width="1dip" android:color="@color/border_black"/>
</shape>

0

Có rất nhiều cách để thêm đường viền vào textView. Cách đơn giản nhất là bằng cách tạo một drawable tùy chỉnh và đặt nó như android:background="@drawable/textview_bg"cho textView của bạn.

Textview_bg.xml sẽ nằm trong Drawables và có thể giống như thế này. Bạn có thể có một solidhoặc một gradientnền (hoặc không có gì nếu không cần thiết), cornersđể thêm bán kính góc và strokethêm đường viền.

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" />

mã này đủ để bạn có thể đặt bất cứ nơi nào bạn muốn


0

setBackground trên textview xml của bạn,

thêm tệp round lòngviewview vào thư mục drawable của bạn.

<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>

đặt tập tin drawable trong nền textView.


-1

Thật ra, nó rất đơn giản. Nếu bạn muốn một hình chữ nhật màu đen đơn giản phía sau Textview, chỉ cần thêm vào android:background="@android:color/black"trong các thẻ TextView. Như thế này:

<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"/>

Ông hỏi biên giới không đầy đủ.
Chàng trai
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.