Android:在多个视图周围放置边框

时间:2015-04-13 23:53:15

标签: android border viewgroup multiple-views

我正在试图找出如何为我正在处理的Android应用程序设置多个视图的边框。看起来应该很简单,但我似乎无法弄明白。我在我的drawable文件夹中保存了以下XML文件:

<?xml version="1.0" encoding="UTF-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <solid android:color="#ffffff" />
    <stroke android:width="1dp" android:color="#000000"/>
    <padding android:left="10dp"
        android:top="10dp"
        android:right="10dp"
        android:bottom="10dp"/>

</shape>

然后我有多个TextView和一个普通视图作为我的主Android应用程序的一部分:

<TextView
    android:id="@+id/tvTitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:background="@drawable/backTop"
    android:gravity="center"
    android:text="@string/title"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<TextView
    android:id="@+id/tvProvHeader"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignStart="@+id/tvTitle"
    android:layout_below="@+id/tvTitle"
    android:layout_marginEnd="20dp"
    android:layout_marginStart="30dp"
    android:layout_marginTop="35dp"
    android:text="@string/providerHeader"
    android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
    android:id="@+id/tvSigStrHeader"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/tvProvHeader"
    android:layout_alignBottom="@+id/tvProvHeader"
    android:layout_marginStart="50dp"
    android:layout_toEndOf="@+id/tvProvHeader"
    android:text="@string/sigStrHeader"
    android:textAppearance="?android:attr/textAppearanceSmall" />

<View
    android:layout_width="fill_parent"
    android:layout_height="4dp"
    android:layout_alignStart="@+id/tvTitle"
    android:layout_alignEnd="@+id/tvTitle"
    android:layout_marginLeft="30dp"
    android:layout_marginRight="30dp"
    android:layout_below="@+id/tvProvHeader"
    android:background="#cccccc" />

<TextView
    android:id="@+id/tvProv1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignStart="@+id/tvProvHeader"
    android:layout_below="@+id/tvProvHeader"
    android:layout_marginTop="16dp"
    android:text="" />

<TextView
    android:id="@+id/tvProv2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignStart="@+id/tvProv1"
    android:layout_below="@+id/tvProv1"
    android:text="" />

<TextView
    android:id="@+id/tvProv3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignStart="@+id/tvProv2"
    android:layout_below="@+id/tvProv2"
    android:text="" />

<TextView
    android:id="@+id/tvProv4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignStart="@+id/tvProv3"
    android:layout_centerVertical="true"
    android:text="" />

我想将边框(来自drawable)放在除第一个TextView之外的所有边框上。我已经看过使用ViewGroup但我似乎无法弄清楚如何使用它。我该怎么做呢?

1 个答案:

答案 0 :(得分:3)

在根布局中创建LinearLayout。然后在该布局中,放置所有TextViews。然后将线性布局背景设置为drawable。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

   <TextView
      android:id="@+id/tvTitle"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentEnd="true"
      android:layout_alignParentStart="true"
      android:layout_alignParentTop="true"
      android:background="@drawable/backTop"
      android:gravity="center"
      android:text="@string/title"
      android:textAppearance="?android:attr/textAppearanceMedium" />

  <LinearLayout
      android:orientation="vertical"
      android:id="@+id/llLinearLayout"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:background="@drawable/your_borderShape>

      ///All of the other text views here

  <LinearLayout/>

顺便说一下,您不必使用LinearLayoutRelativeLayout是另一种流行的选择。