如何在ListView中垂直居中元素?

时间:2013-08-28 11:22:28

标签: android android-layout

我在ListView中列出了许多Switch元素。目前它们出现如下:

enter image description here

但我需要它们垂直居中,例如

enter image description here

我使用以下AXML作为每个列表项的定义:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/widget32"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <Switch
        android:id="@+id/switchOutput"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:text="[Output Name]"
        android:gravity="center_vertical" />
    <ImageButton
        android:id="@+id/imgTime"
        android:background="@null"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/datetime"
        android:scaleType="fitCenter"
        android:layout_alignParentRight="true" />
</RelativeLayout>

我认为android:gravity="center_vertical"足以让它们正确显示,但它似乎不起作用。我需要什么才能使开关在每个列表项中垂直居中?

4 个答案:

答案 0 :(得分:3)

添加android:layout_centerVertical="true" ...这会将该孩子垂直居中于其父...

layout_centerVertical

注意: - 父版面必须为RelativeLayout ..

OP编辑:现在这是正确居中的布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/widget32"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <Switch
        android:id="@+id/switchOutput"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:text="[Output Name]"
        android:layout_centerVertical="true" />
    <ImageButton
        android:id="@+id/imgTime"
        android:background="@null"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/datetime"
        android:scaleType="fitCenter"
        android:layout_alignParentRight="true" />
</RelativeLayout>

答案 1 :(得分:0)

您必须将center标记设置为父RelativeLayout

答案 2 :(得分:0)

你的意思是这样吗?

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget32"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >

<Switch
    android:id="@+id/switchOutput"
    android:layout_width="250dp"
    android:layout_height="match_parent"
    android:layout_alignBottom="@+id/imgTime"
    android:layout_gravity="center_vertical"
    android:gravity="center_vertical"
    android:text="[Output Name]" />

<ImageButton
    android:id="@+id/imgTime"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:background="@null"
    android:scaleType="fitCenter"
    android:src="@drawable/datetime" />

</RelativeLayout>

答案 3 :(得分:0)

您可以使用:

android: layout_centerVertical = "true".