如何在TextViews下正确对齐列表视图

时间:2013-11-14 17:53:29

标签: android android-listview android-xml

我正在尝试排列列表视图中的6个字段,其中包含位于屏幕顶部的6个标签字段。我已经使所有文本大小相同,maxEms大小相同,布局重量都相同。我的问题是列表视图没有一直与屏幕左边对齐。它似乎有一些内置的默认左边距。我可以摆脱重量并在我的标签上设置手动边距以制作所有阵容,但我认为当不同尺寸的屏幕发挥作用时,这可能是一场噩梦。

这是我的屏幕的第一个布局(此布局包含表示我的listView标签的TextView。线性布局位于相对布局内)

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"
    android:layout_below="@+id/dateDisplayTextView"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:layout_weight="1"
        android:maxEms="2"
        android:text="#1"
        android:textColor="@color/green"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:layout_weight="1"
        android:maxEms="2"
        android:text="#2"
        android:textColor="@color/green"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:layout_weight="1"
        android:maxEms="2"
        android:text="#3"
        android:textColor="@color/green"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:layout_weight="1"
        android:maxEms="2"
        android:text="#4"
        android:textColor="@color/green"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/textView6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:layout_weight="1"
        android:maxEms="2"
        android:text="#5"
        android:textColor="@color/green"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/textView7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:layout_weight="1"
        android:maxEms="2"
        android:text="PB"
        android:textColor="@color/red"
        android:textSize="16sp" />

</LinearLayout>

<ListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_above="@+id/emailButton1"
    android:layout_below="@id/linearLayout1" >

</ListView>

 <Button
    android:id="@+id/emailButton2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:text="Back" />

 <Button
     android:id="@+id/emailButton1"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignParentBottom="true"
     android:onClick="emailTickets"
     android:layout_alignParentRight="true"
     android:text="Email tickets to contacts" />

这是在我的自定义适配器

中扩展的布局
<?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="wrap_content"
android:layout_alignParentLeft="true"
android:orientation="horizontal" >


<TextView
    android:id="@+id/number1TextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:maxEms="2"
    android:layout_weight="1"
    android:textSize="16sp"
    android:text="TextView" />

<TextView
    android:id="@+id/number2TextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:maxEms="2"
    android:layout_weight="1"
    android:textSize="16sp"
    android:text="TextView" />

<TextView
    android:id="@+id/number3TextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:maxEms="2"
    android:layout_weight="1"
    android:textSize="16sp"
    android:text="TextView" />

<TextView
    android:id="@+id/number4TextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:maxEms="2"
    android:layout_weight="1"
    android:textSize="16sp"
    android:text="TextView" />

<TextView
    android:id="@+id/number5TextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:maxEms="2"
    android:layout_weight="1"
    android:textSize="16sp"
    android:text="TextView" />

<TextView
    android:id="@+id/numberPBTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:maxEms="2"
    android:layout_weight="1"
    android:textSize="16sp"
    android:text="TextView" />

</LinearLayout>

这是我的布局图像,展示了我的问题

Screen shot

我试图调整我的标签恶魔所在的线性布局的左边距,但它没有任何影响。我为这篇长篇文章道歉,我只是想确保我提供了所有相关信息。提前致谢

3 个答案:

答案 0 :(得分:2)

组合:

    android:layout_width="wrap_content"
    android:layout_weight="1"

表示文本字段至少具有内容的大小,无论剩下多少空间,均匀分布在字段之间。具有不同的内容,将导致文本字段的宽度不同。 android:maxEms不会改变,因为它定义了最大宽度,字段的宽度可以更小。

两种可能导致正确尺寸的定义。为标题和行中的每个文本获取该代码:

<强> 1。让Android找出合适的宽度:

<TextView
    android:id="@+id/..."
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:textSize="16sp"
    android:text="TextView" />

将宽度设置为0意味着所有空间都是分布式的(并由layout_weight加权)。

<强> 2。通过ems

设置字段的宽度
<TextView
    android:id="@+id/..."
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:ems="2"
    android:textSize="16sp"
    android:text="TextView" />

ems定义宽度。同样,剩下的空间将被分发。

答案 1 :(得分:0)

你可以使用

  

机器人:layout_padding

这对你有用。

答案 2 :(得分:0)

尝试将自定义适配器重力的textViews留给

 android:gravity="left"