将listview中的android文本和图像对齐是一样的

时间:2012-09-19 14:36:49

标签: android android-layout alignment

我需要一些帮助,将自定义列表视图与图像和文本对齐。

我正在尝试这个:

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

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical|center"
        android:paddingTop="20dp"
        android:layout_weight="2"
        android:text="TextView" />
</LinearLayout>

我认为重量是保持元素的比例,而不是元素的内容,但显然它会关注文本视图中的内容,所以我的列表看起来很乱。

无论文本在文本视图中显示多长时间,如何将其对齐都是一样的?

My Crazy alignment

所以绿线应该是直线垂直线,无论右侧是否有文字。

TNX

4 个答案:

答案 0 :(得分:3)

基本上,你的布局应该是:

<TextView
    android:id="@+id/textView1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical|center"
    android:paddingTop="20dp"
    android:layout_weight="2"
    android:drawableLeft="@drawable/ic_launcher"
    android:text="TextView" />

android:drawableLeft="@drawable/ic_launcher"定义最左边的复合drawable,它会很好地对齐。

example

答案 1 :(得分:0)

使用

android:layout_height="0dp"
在你的textView中。它会为你的所有元素提供固定的大小。这里,权重参数共享的大小是可变的,因为它取决于文本的数量。

答案 2 :(得分:0)

请改为尝试:

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

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="0dp"
        android:layout_height="50dp"
        android:layout_gravity="center_vertical"
        android:layout_weight="1"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_weight="2"
        android:text="TextView" />
</LinearLayout>

答案 3 :(得分:0)

删除android:layout_weight

这将在您定义宽度后对齐图像。

如果您也要对齐文字,请移除android:gravity或将其设置为左侧。

您可以将android:marginRight添加到imageView以获得更好的可读性。