我有以下代码,这是我所拥有的列表视图的行布局。我想左边的标签和右边的数据。数据应该在左侧对齐,但此时它看起来很弯曲。
我试图为linearlayout中的textviews指定权重。标签的重量为1,数据的重量为5.我预计数据文本视图将垂直排列,因为它们占据水平宽度的5/6,标签为1/6。
为什么数据TextViews不能同等地占用相同数量的屏幕宽度?
在开发人员选项中,我检查了展示布局边界,并证明数据文本视图不会垂直排列。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/white"
android:paddingTop="10dp"
android:paddingBottom="10dp">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/carerinfotypelabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Type: "
android:layout_weight="1"
android:textColor="@color/cf_blue"
/>
<TextView
android:id="@+id/carerinfotype"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="5"
/>
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/carerinfosurnamelabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Name: "
android:layout_weight="1"
android:textColor="@color/cf_blue"
/>
<TextView
android:id="@+id/carerinfosurname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="5"
android:layout_below="@id/carerinfotypelabel"
/>
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/carerinfoaddresslabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Address: "
android:layout_weight="1"
android:textColor="@color/cf_blue"
/>
<TextView
android:id="@+id/carerinfoaddress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="5" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/carerinfopostcodelabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Postcode: "
android:layout_weight="1"
android:textColor="@color/cf_blue"
/>
<TextView
android:id="@+id/carerinfopostcode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="5" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/carerinfomobilelabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Mobile: "
android:layout_weight="1"
android:textColor="@color/cf_blue"
/>
<TextView
android:id="@+id/carerinfomobile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="5"
/>
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/carerinfotelhomelabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Home Tel: "
android:layout_weight="1"
android:textColor="@color/cf_blue"
/>
<TextView
android:id="@+id/carerinfotelhome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="5"
/>
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/carerinfotelno1label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tel 1: "
android:layout_weight="1"
android:textColor="@color/cf_blue"
/>
<TextView
android:id="@+id/carerinfotelno1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="5" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/carerinfotel2label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tel 2: "
android:layout_weight="1"
android:textColor="@color/cf_blue"
/>
<TextView
android:id="@+id/carerinfotel2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="5"
/>
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/carerinfotel3label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tel 3: "
android:layout_weight="1"
android:textColor="@color/cf_blue"/>
<TextView
android:id="@+id/carerinfotel3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="5"/>
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/carerinfotel4label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tel 4: "
android:layout_weight="1"
android:textColor="@color/cf_blue"/>
<TextView
android:id="@+id/carerinfotel4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="5" />
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/carerinforelationshiplabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Relationship: "
android:layout_weight="1"
android:textColor="@color/cf_blue"
/>
<TextView
android:id="@+id/carerinforelationship"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="5"
/>
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/carerinfodoblabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="DOB: "
android:layout_weight="1"
android:textColor="@color/cf_blue"
/>
<TextView
android:id="@+id/carerinfodob"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="5"
/>
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/carerinfopinlabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="PIN: "
android:layout_weight="1"
android:textColor="@color/cf_blue"
/>
<TextView
android:id="@+id/carerinfopin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="5"
/>
</LinearLayout>
</LinearLayout>
答案 0 :(得分:0)
由于layout_width="wrap_content"
,每个子视图的左侧文本视图都没有对齐。他们首先根据他们的内容占用空间,之后weight
属性提供更多空间,这也可能有所不同。 layout_weight
属性用于指示剩余空间如何在LinearLayout
的视图中使用。你可以在这做两件事。
对于每个子行,将两个文本视图的layout_width
设为0dp
。这意味着整个宽度是剩余空间,并且仅对每个将保持一致的子行由weight
进行给出空间的计算。
或者您可以手动将每个文本视图的width
定义为相等(例如40dp
)。
答案 1 :(得分:-1)
你需要指定android:weightSum =&#34; 6&#34;在你的所有水平布局中。 这个属性告诉android分离6个部分的容器,然后用android:layout_weight你告诉android一个元素必须适合多少部分。
另一件事:当你设置android:layout_weight时,你必须在相应的width或height属性上设置0dp。否则可能会出错
一个例子
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="6">
<TextView
android:id="@+id/carerinfodoblabel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="DOB: "
android:layout_weight="1"
android:textColor="@color/cf_blue" />
<TextView
android:id="@+id/carerinfodob"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="5" />
</LinearLayout>