0

我有一个两行列表视图,该行包含以下 XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:orientation="vertical" 
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip"
android:gravity="center_vertical"
>

  <TextView
    android:id="@+id/designation"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:gravity="center_vertical"
    android:textSize="18sp"
    android:textStyle="bold" />

  <TextView
    android:layout_width="fill_parent"
    android:layout_height="0dip"
    android:layout_weight="2" 
    android:id="@+id/orderedValue"
    android:gravity="bottom"
    android:singleLine="true"
    android:ellipsize="marquee"
    />  

</LinearLayout>

我想要的是让第一行(指定)位于该行的确切垂直中心,第二行(orderedValue)就在它的下方

我一直在尝试对 TextViews 使用 LinearLayout/Relative 布局、重力与 layout_gravity 的几种组合,但无济于事

这里有任何帮助/指针吗?

4

3 回答 3

1

我会View在第一个上方留一个空白,TextView它可以与下面的文本共享相同的权重。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical" 
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip"
>

  <View
    android:layout_width="match_parent"
    android:layout_height="0dip"
    android:layout_weight="1"
    />  

  <TextView
    android:id="@+id/designation"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="18sp"
    android:textStyle="bold" />

  <TextView
    android:layout_width="match_parent"
    android:layout_height="0dip"
    android:layout_weight="1" 
    android:id="@+id/orderedValue"
    android:singleLine="true"
    android:ellipsize="marquee"
    />  

</LinearLayout>
于 2012-08-18T22:51:23.150 回答
0

如果我是你,我会尝试将designationTextView 放在 LinearLayout 中并使用android:layout_gravity它来居中。我在我的活动中尝试了这个,它以第一个 TextView 为中心。但是,我不确定它是否适用于您的列表。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:orientation="vertical" 
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip"
android:gravity="center_vertical" >
    <LinearLayout 
        android:id="@+id/layout"
        android:layout_height="fill_parent" 
        android:layout_width="fill_parent"
        android:layout_weight="1"
        android:orientation="vertical" >
        <TextView
        android:id="@+id/designation"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:textSize="18sp"
        android:textStyle="bold"
        android:text="designation" />
    </LinearLayout>
    <TextView
    android:layout_width="fill_parent"
    android:layout_height="0dip"
    android:layout_weight="2" 
    android:id="@+id/orderedValue"
    android:gravity="bottom"
    android:singleLine="true"
    android:ellipsize="marquee"
    android:text="orderedValue" />  
</LinearLayout>
于 2012-08-19T00:39:35.130 回答
0

iTurki,感谢您的输入,但在阅读您的解决方案之前我刚刚解决了它。

我切换到相对布局并更改了一些参数,最重要的是添加了:android:layout_centerVertical="true"。

这是我的最终布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:orientation="vertical" 
  android:layout_height="fill_parent"
  android:padding="6dip"
  >

  <TextView
    android:id="@+id/designation"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"       
    android:textSize="19sp"
    android:layout_centerVertical="true"
    android:textStyle="bold" />

  <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/orderedValue"       
    android:singleLine="true"
    android:layout_below="@id/designation"
    android:paddingTop="6dip"
    android:textColor="#33B5E5"
    android:textSize="13sp"
    />  

</RelativeLayout>

谢谢两位的关注!

于 2012-08-19T00:47:05.290 回答