In Android development, adding borders to views such as TextView
can be achieved through various methods. This tutorial will guide you through different approaches to add borders to a TextView
, including using shape drawables, 9-patch images, layer lists, and views.
Using Shape Drawables
One of the most common ways to add a border to a TextView
is by using a shape drawable. You can create a new XML file in your drawable
folder (e.g., border.xml
) with the following content:
<?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" />
<!-- View border color and width -->
<stroke
android:width="1dp"
android:color="@color/border_color" />
<!-- The radius makes the corners rounded -->
<corners
android:radius="2dp" />
</shape>
Then, you can set this shape drawable as the background of your TextView
:
<TextView
android:id="@+id/textview1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/border" />
Using 9-Patch Images
Another way to add a border is by using a 9-patch image. A 9-patch is a stretchable background image that can be created using the draw9patch
tool provided by Android. You can create an image with a border and then set it as the background of your TextView
.
<TextView
android:id="@+id/textview1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/my_ninepatch_image" />
Using Layer Lists
If you want to add a border only to one side of your TextView
, you can use a layer list. A layer list allows you to stack multiple drawables on top of each other.
<?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>
You can apply this layer list to your TextView
background in the same way as a shape drawable.
Using Views
Finally, you can also use a View
to add a border between two views or to a single TextView
. This method involves adding an extra view with a height of 1-2 dp and setting its background color.
<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>
In conclusion, adding borders to TextView
in Android can be achieved through various methods, each with its own advantages and use cases. By choosing the right approach for your specific needs, you can enhance the visual appearance of your app’s UI.