Android忽略自定义行上的权重参数

时间:2013-03-04 09:43:41

标签: android xml listview

我有以下xml为我的listview构建自定义行。它工作正常,但地址旁边的状态是自动换行,我不想要。在过去我只是设定了一个重量并且一切都很好,但它似乎没有在这里打球。

这是它的样子:

enter image description here

下面是手机上发生的事情:

enter image description here

继承我的xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/listviewonclick"
    android:orientation="vertical"
    android:padding="@dimen/Padding" >

    <LinearLayout
        android:id="@+id/linHoz"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="10" >

        <TextView
            android:id="@+id/status"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="3"
            android:paddingLeft="@dimen/left"
            android:text="Large Text"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textColor="@color/cachecolor"
            android:textSize="@dimen/MedText" />

        <TextView
            android:id="@+id/txtSpacer"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="@dimen/left"
            android:text=" | "
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textColor="@color/yellow"
            android:textSize="@dimen/MedText" />

        <TextView
            android:id="@+id/Address"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="3"
            android:paddingLeft="@dimen/left"
            android:text="Large Text"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textColor="@color/white"
            android:textSize="@dimen/MedText" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/linHoz2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <ImageView
            android:id="@+id/icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:clickable="true"
            android:padding="10dp"
            android:src="@drawable/ico_information" />

        <TextView
            android:id="@+id/text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:padding="10dp"
            android:layout_weight="6"
            android:text="Medium Text"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <Button
            android:id="@+id/btnStart"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/greenbuttons"
            android:text="Start" />

    </LinearLayout>

  <LinearLayout
      android:id="@+id/linarea"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:layout_weight="0.50" >

      <Button
          android:id="@+id/btnMap"
          style="?android:attr/buttonStyleSmall"
          android:layout_width="wrap_content"
          android:layout_height="28dp"
          android:layout_margin="4dp"
          android:layout_weight="3"
          android:background="@drawable/smallbluebutton"
          android:text="Map" />

      <Button
          android:id="@+id/btnInformation"
          style="?android:attr/buttonStyleSmall"
          android:layout_width="wrap_content"
          android:layout_height="28dp"
          android:layout_margin="4dp"
          android:layout_weight="3"
          android:background="@drawable/smallpurplebuttons"
          android:text="Information" />

      <Button
          android:id="@+id/btnProblems"
          style="?android:attr/buttonStyleSmall"
          android:layout_width="110dp"
          android:layout_height="28dp"
          android:layout_margin="4dp"
          android:layout_weight="3"
          android:background="@drawable/smallredbutton"
          android:text="Problems" />
  </LinearLayout>

</LinearLayout>

2 个答案:

答案 0 :(得分:0)

仅将layout_weight属性分配给地址标签。您可以设置layout_width="0dip"以获得更好的效果。并明确设置布局方向。

<LinearLayout
    android:id="@+id/linHoz"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/status"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Your Status" />

    <TextView
        android:id="@+id/txtSpacer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=" | "/>

    <TextView
        android:id="@+id/Address"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Very very long text goes here. Very very long text goes here." />

</LinearLayout>

答案 1 :(得分:0)

如果没有足够的空间让TextView显示单行中的所有文本,则为warp或省略号。默认情况下,TextView是多行的,并将包装文本。要使用省略号,请添加android:singleLine="true"

关于文字宽度的比例: 为参与加权布局的所有视图设置android:layout_width="0dp"。 使用android:layout_weight按比例为每个人分配权重。例如。 0.3用于下载TextView0.7用于地址TextView。这将为第一个视图提供30%的空间,为第二个视图提供70%的空间。