757

Có thể vẽ đường viền xung quanh chế độ xem văn bản không?

|
1.3k

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

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

Và back.xml có thể vẽ được hình chữ nhật (được đưa 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/transparentmàu đặc để có nền trong suốt. Bạn cũng có thể sử dụng đệm để tách văn bản khỏi đường viền. để biết thêm thông tin, hãy xem: http://developer.android.com/guide/topics/resources/drawable-resource.html

|
  • 1
    Điều gì sẽ xảy ra nếu tôi chỉ muốn đường viền trên cùng? –  17:55:07 01/08/2012
  • 1
    @whyoz Phương pháp của anh ấy bổ sung thêm độ phức tạp không cần thiết để xem thứ bậc. Bạn sẽ cần hai chế độ xem bổ sung (Một vùng chứa bố cục và chế độ xem đường viền) để sử dụng phương pháp của mình. Vì vậy, nếu bạn có nhiều chế độ xem cần thêm đường viền, cây chế độ xem của bạn sẽ phát triển không thể quản lý được. –  15:23:42 28/03/2013
  • 1
    @whyoz nhưng phương pháp này có thể được áp dụng thông qua các kiểu chủ đề, trong khi phương pháp của YongGu không thể được sử dụng theo cách này. –  15:25:43 28/03/2013
  • 1
    Chỉ dành cho đường viền trên cùng , hãy xem câu hỏi này . –  03:01:40 07/04/2014
  • 1
    Bạn có thể sử dụng công cụ này http://shapes.softartstudio.com để tạo các tệp có thể kéo. –  23:55:52 17/11/2015
210

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

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

Lưu phần sau dưới dạng tệp XML trong thư mục có thể kéo 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

9-bản vá là một hình nền có thể co giãn. Nếu bạn tạo một hình ảnh có đườ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ó làm 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ẽ hướng dẫn cách tạo hình ảnh 9 bản vá:

Điều gì sẽ xảy ra nếu tôi chỉ muốn đường viền trên cùng?

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 đầu tiên, bạn có thể tạo hiệu ứng đường viền. Hình chữ nhật đầu tiên (dưới) là màu đường 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"lệch đỉnh (làm cho nó nhỏ hơn) 2dp. Điều này cho phép hình chữ nhật đầu tiên (phía dưới) hiển thị xuyên qua, tạo hiệu ứng đườ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 khác 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 mảnh 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 thủ thuật nhưng nó hoạt động tốt nếu bạn cần thêm bộ tách biệt giữa hai chế độ xem hoặc đường viền vào một TextView duy nhất.

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

|
  • 1
    Trời ạ, a border: 1px solid #999;không được cho là phức tạp thế này . –  23:51:18 02/02/2018
  • 1
    Điều gì sẽ xảy ra nếu tôi muốn đường viền của chế độ xem văn bản, cũng có hiệu ứng bóng và gợn sóng? –  06:47:42 16/03/2018
  • 1
    @AkashDubey, Xin lỗi, tôi chưa làm điều đó trước đây. Tôi khuyên bạn nên thử từng cái riêng biệt và sau đó kết hợp chúng. Nếu bạn gặp khó khăn, hãy đặt một câu hỏi mới trên Stack Overflow. –  07:44:46 16/03/2018
50

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 chế độ xem dải phân cách.

|
  • 1
    Đối với kinh 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àng đến hiệu suất ứng dụng. –  13:16:05 23/09/2013
  • 1
    Đây là một giải pháp khủng khiếp nếu xét từ góc độ lạm phát. Bạn tạo ra 3 yếu tố nhìn mới và thêm mức một sâu hơn trong cái nhìn hệ thống cấp bậc –  23:26:53 15/11/2013
  • 1
    Giải pháp tồi tệ nhất vì quan điểm lạm phát xem như philippe đã nói. Bạn có biết rằng textView có thẻ xml cụ thể để làm điều đó: xác định một hình ảnh để vẽ sang trái / phải / trên / dưới khơi dậy TextView của bạn và chúng được gọi là android: drawable **** –  11:06:12 02/12/2016
34

Tôi đã giải quyết vấn đề này bằng cách mở rộng chế độ xem văn bản và vẽ đường viền theo cách thủ công. Tôi thậm chí còn thêm vào để bạn có thể chọn nếu một đường viền là chấm hoặc gạch ngang.

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 ai đó :)

|
  • 1
    Làm thế nào để khởi tạo đường viền? –  02:31:59 29/07/2015
  • 1
    Nó không thể làm việc một cách chính xác, như các chương trình mã nó rút biên giới ở nửa kích thước của giá trị được xác định –  19:16:15 30/04/2018
17

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

<TextView
    ...
    android:background="@android:drawable/editbox_background" />
|
  • 1
    Có thể áp dụng điều này cho tất cả các chế độ xem văn bản từ một nơi không? –  18:25:07 27/07/2018
  • 1
    Rất vui cho một nhanh chóng. 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 tác động rất bất thường. Điều này là do Google tiếp tục thay đổi như thế nào EditTexts tìm (bạn gotta giữ trong thời trang!) –  16:51:02 01/08/2019
14

Bạn có thể đặt đường viền bằng hai phương pháp. Một là có thể vẽ được và thứ hai là có 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>

Có 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;
}
|
14

Tôi chỉ đang xem một câu trả lời tương tự - nó có thể được thực hiện với một 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); 
}
|
  • 1
    Tuyệt quá! Mối quan tâm duy nhất của tôi là nét vẽ 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. –  21:40:35 15/05/2012
  • 1
    @erdomester Có thể Paint StrokePaint = Sơn mới (Paint.ANTI_ALIAS_FLAG); sẽ giải quyết "xấu xí ở các góc" vấn đề –  00:05:29 18/09/2015
11

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

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

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

Sử dụng hình ảnh chín bản vá cho nền. Nó 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à nó hoàn toàn không liên quan đến mã hóa.

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

|
  • 1
    Hữu ích, có, nhưng làm thế nào là tốt hơn? –  10:25:16 13/03/2013
  • 1
    Sử dụng một hình dạng như câu trả lời được chấp nhận nói là tốt hơn so với một 9-patch, một tập tin XML là linh hoạt hơn một tài sản đồ họa –  21:22:54 12/12/2013
  • 1
    Phương pháp tiếp cận hình dạng là vô dụng. Có lẽ tôi là người duy nhất gặp phải, rằng thẻ "solid" luôn được xử lý, bất kể được đặt thành trong suốt hay không. Và nếu tôi muốn tạo BIÊN GIỚI, ý tôi là, một BIÊN GIỚI chứ không phải một hình chữ nhật với các đường viền bên trong được tô màu và các đường viền màu khác. Và nó KHÔNG BAO GIỜ là chất rắn trong suốt. Nó luôn luôn làm rối loạn màu sắc. Ngoài ra, một lớp, kế thừa từ mộ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 Android cơ bản của hướng dẫn thiết kế OO lại bị phá vỡ. Ví dụ, tôi kế thừa từ nút. Tất cả các tính năng đã biến mất. Tại sao ? –  10:31:04 10/01/2014
  • 1
    @Jeremie Chậm hơn rõ rệt? Bạn quan sát nó như thế nào? –  18:49:09 21/08/2014
  • 1
    "Giới hạn" và "có lập trình" không thuộc cùng một câu. –  00:07:18 20/10/2017
10

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

Thư mục có thể vẽ, dưới res, trong một dự án Android không bị giới hạn ở các ảnh bitmap (tệp PNG hoặc JPG), nhưng nó cũng có thể chứa 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 sử dụng lại trong dự án. Một hình dạng có thể được sử dụng để đặt đường viền xung quanh 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 có thể vẽ (trong Eclipse sử dụng menu Tệp và chọn Mới rồi đến Tệp, với loại thư mục có thể vẽ được đã chọn trong tên tệp và nhấp 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 (các tệp hình dạng cũng hỗ trợ hình bầu dục, đường thẳng và vòng). Hình chữ nhật là giá trị mặc định, do đó, thuộc tính này có thể bị bỏ qua nếu nó là hình chữ nhật đang được xác định. Xem tài liệu Android về hình dạng tại http://developer.android.com/guide/topics/resources/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 của Android).

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

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

Hình dạng cũng hỗ trợ gradient, nhưng điều đó không được sử dụng ở đây. Một lần nữa, hãy xem các tài nguyên Android để biết cách xác định độ dốc. Hình dạng được áp dụng cho laypout bằng cách 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 đơn đã được thêm vào và văn bản có màu trắng (FFFFFF hệ thập lục phân 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ị A00000FF alpha RGB hệ thập lục phân). Cuối cùng, bố cục được bù đắp khỏi mép 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ỏ đệm. Do đó, tệp bố cục đầ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>
|
  • 1
    Các câu trả lời chỉ liên kết rất không được khuyến khích, vì các liên kết có xu hướng bị đứt vào một thời điểm nào đó 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ó. –  18:21:28 06/04/2014
8

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

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

|
4

Bạn có thể tạo nền tùy chỉnh cho chế độ xem văn bản của mình. Các bước

  1. Đi tới dự án của bạn.
  2. Đi tới tài nguyên và nhấp chuột phải để vẽ được.
  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:bottom="1dp"
        android:left="1dp"
        android:right="1dp"
        android:top="1dp" />
    <corners android:radius="6dp" />
    <solid android:color="#ffffffff" />
</shape>
  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: background = "@ drawable / your_fileName"

|
3

Với Thư viện Thành phần Vật liệu, bạn có thể sử dụng MaterialShapeDrawable.

    <TextView
        android:id="@+id/textview"
        .../>

Sau đó, bạn có thể lập trình áp dụng MaterialShapeDrawable:

    TextView textView = findViewById(R.id.textview);
    MaterialShapeDrawable shapeDrawable = new MaterialShapeDrawable();
    shapeDrawable.setFillColor(ContextCompat.getColorStateList(this,android.R.color.transparent));
    shapeDrawable.setStroke(1.0f, ContextCompat.getColor(this,R.color....));
    ViewCompat.setBackground(textView,shapeDrawable);

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

|
2

Thay đổi câu trả lời của Konstantin Burov vì không hiệu quả 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, thực hiện 'com.android.support:appcompat-v7:26.1.0', gradle: 4.1

|
1

Đây là lớp trợ giúp 'đơn giản' của tôi, lớp này trả về một ImageView có đường 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;
    }
}
|
0

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

thêm tệp round_textview.xml vào thư mục có thể vẽ 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 có thể vẽ trong nền textView.

|
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

Có rất nhiều cách để thêm đường viền vào textView. Cách đơn giản nhất là tạo một tệp có thể vẽ 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 yêu cầu), 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

Thử cái này:

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

Tạo dạng 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 dạng xem văn bản của bạn. đặt đệm chế độ xem đường viền làm chiều rộng của đường 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ờ hãy thêm chế độ xem văn bản của bạn bên trong chế độ xem đường viền.

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

Thực ra, nó rất đơn giản. Nếu bạn muốn có 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"bên 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"/>
|

Câu trả lời của bạn (> 20 ký tự)

Bằng cách click "Đăng trả lời", bạn đồng ý với Điều khoản dịch vụ, Chính sách bảo mật and Chính sách cookie của chúng tôi.

Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ hoặc hỏi câu hỏi của bạn.