如何在自定义ListView行中相应地对齐ImageView和TextView?

时间:2016-05-05 16:15:18

标签: android listview textview imageview

我创建了一个列表视图,其中包含自定义适配器和包含ImageView和TextView的自定义行布局。

我的问题是什么,因为在我的应用运行时以编程方式创建的视图,这个结果出现在ex: enter image description here

* 黑色矩形表示每行中的图标

包含这些视图的视图是线性布局,我尝试做的是将重力设置为居中。这行得通。但是当涉及长标题时,Icon会移出中间

我怎样才能成功获得以下结果,无论标题长度是多少(虽然不够大)?

enter image description here

提前致谢! 我的xml文件:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:gravity="center">

    <ImageView
        android:id="@+id/menu_item_icon"
        android:layout_width="32dp"
        android:layout_height="32dp"
        android:layout_marginRight="10dp"
        android:layout_marginEnd="10dp"/>

    <TextView
        android:id="@+id/menu_item_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Item_name"
        android:textColor="#fff"
        android:textSize="16sp"
        android:gravity="center"
        android:layout_marginLeft="10dp"
        android:layout_marginStart="10dp"
        android:layout_gravity="center_vertical"/>

</LinearLayout>

4 个答案:

答案 0 :(得分:1)

这是不可能的,因为线性布局的重力是“ center ”,您应该将此线性布局的重力更改为“”并执行任何<您希望在视图左侧显示strong> margin 。

答案 1 :(得分:0)

那样做:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    >

    <ImageView
        android:id="@+id/menu_item_icon"
        android:layout_width="32dp"
        android:layout_height="32dp"
        android:layout_marginRight="10dp"
        android:layout_marginEnd="10dp"/>

    <TextView
        android:id="@+id/menu_item_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Item_name"
        android:textColor="#fff"
        android:textSize="16sp"
        android:gravity="center"
        android:layout_marginLeft="10dp"
        android:layout_marginStart="10dp"
        android:layout_gravity="center_vertical"/>

</LinearLayout>

答案 2 :(得分:0)

试试这个

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" 
android:orientation="horizontal"
android:gravity="center">

<ImageView
    android:id="@+id/menu_item_icon"
    android:layout_width="32dp"
    android:layout_height="32dp"
    android:layout_marginLeft="10dp"
    android:layout_marginStart="10dp"
    android:layout_marginRight="10dp"
    android:layout_marginEnd="10dp"
    android:layout_gravity="center_vertical"/>

<TextView
    android:id="@+id/menu_item_title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Item_name"
    android:textColor="#fff"
    android:textSize="16sp"
    android:gravity="center_vertical"
    android:layout_gravity="center_vertical"/>

答案 3 :(得分:0)

gravity的{​​{1}}更改为LinearLayout,设置left的{​​{1}}

layout_marginLeft