【问题标题】:How to center widgets vertically when orientation is horizontal for an Android LinearLayout?当 Android LinearLayout 的方向为水平时,如何垂直居中小部件?
【发布时间】:2017-02-22 01:01:06
【问题描述】:

我在 Android ListView 中有几种不同的项目视图类型,每一种都有自己的 LinearLayout。除了相对于彼此水平放置之外,我还试图将它们的所有小部件垂直居中。请参阅附图中 ListView 中的第一项。它看起来不错,只是小部件被推到靠近 ListView 项目的顶部。

TextView 和 ImageViews 的浅蓝色和浅绿色背景旨在帮助查看 xml 对放置的影响。图片下方是我对 ListView 中最顶层项目的布局。如何使 TextView 以及圆形图像 (ImageView) 垂直居中?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:paddingBottom="5dp">

        <TextView
            android:id="@+id/ques_num"
            android:layout_width="30dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="2dp"
            android:layout_marginRight="2dp"
            android:layout_marginTop="2dp"
            android:layout_marginBottom="2dp"
            android:background="@color/LightBlue"
            android:text="0."
            android:textSize="22sp" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:layout_gravity="center_vertical"
            android:background="@color/LightGreen"
            android:adjustViewBounds="true"
            android:id="@+id/question_id_0" />
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:layout_gravity="center_vertical"
            android:background="@color/LightGreen"
            android:adjustViewBounds="true"
            android:id="@+id/question_id_1" />
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:layout_gravity="center_vertical"
            android:background="@color/LightGreen"
            android:adjustViewBounds="true"
            android:id="@+id/question_id_2" />
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:layout_gravity="center_vertical"
            android:background="@color/LightGreen"
            android:adjustViewBounds="true"
            android:id="@+id/question_id_3" />
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:layout_gravity="center_vertical"
            android:background="@color/LightGreen"
            android:adjustViewBounds="true"
            android:id="@+id/question_id_4" />


</LinearLayout>

更新:

我尝试简单地添加到 LinearLayout:

android:gravity="center_horizontal"

然后尝试将其更改为:

android:gravity="center_horizontal|center_vertical"

在这两种情况下,它都会将小部件移动到 ListView 项目的水平中心,但对垂直定位没有影响。在图片中查看结果:

【问题讨论】:

  • 将 android:gravity="center_horizo​​ntal|center_vertical" 添加到线性布局中。
  • 这并没有改变垂直位置,虽然它确实改变了水平定位,这不是我需要的。我编辑了这个问题,并发布了一张我尝试这样做时会发生什么的图片。

标签: android listview android-linearlayout vertical-alignment listviewitem


【解决方案1】:

整个问题是LinearLayout中这条线的组合:

android:paddingBottom="5dp"

事实上,考虑到 TextView 和 ImageView 对象中内容的大小,ListView 项的上下边界已经尽可能地压入。由于 paddingBottom 属性,即使看起来有,也没有进行居中调整的空间。

【讨论】:

    【解决方案2】:

    将此添加到具有水平方向的 LinearLayout

    android:gravity="center_horizontal"
    

    【讨论】:

    • 您是否打算推荐“center_vertical”?因为我需要垂直居中。你可能误读了我的问题。我确实尝试了你的建议。有关结果,请参阅我更新的问题。
    • 尝试将此添加到您的 LinearLayout android:layout_centerVertical="true" android:layout_centerHorizo​​ntal="true"
    • 感谢您的帮助,我真的很愿意,我会尝试您推荐的方法,但是您是否重现了我的问题并推荐了您确信可行的方法?还是你只是在猜测,然后扔东西让我试试?
    • 尝试 layout_centerHorizo​​ntal 和 layout_centerVertical 完全没有效果,那是因为,我刚刚了解到,这些是 RelativeLayout 的属性。这是一个线性布局。
    猜你喜欢
    • 2014-03-16
    • 1970-01-01
    • 2020-08-15
    • 2020-11-07
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多