【问题标题】:Android: Center view content doesn't center verticallyAndroid:中心视图内容不垂直居中
【发布时间】:2011-10-05 12:54:11
【问题描述】:

我试图让 ProgressBar 和 TextView 在 ViewSwitcher 中居中。它们可以垂直放置在彼此上方,尽管如果它们水平居中并排在一起我没有问题。我能够让它们水平居中但不能垂直居中。尽管每个父视图都有 android:layout_height="fill_parent"

,但外部视图(ViewSwitcher)的高度似乎没有垂直填充

这里是xml:

<ViewSwitcher
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/loadSwitcher"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:gravity="center"
  android:background="#ff000000">
  <ProgressBar
    android:indeterminate="true"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:id="@+id/marker_progress"
    style="?android:attr/progressBarStyle"
    android:gravity="center_vertical" />
  <TextView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:textSize="18sp"
    android:text="Loading data..."
    android:gravity="center" />
</LinearLayout>
<ListView
  android:id="@+id/android:appCategoriesList"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="#ff918e8e"
  android:divider="#ff000000"
  android:dividerHeight="1dp"
  android:cacheColorHint="#00000000"
  android:scrollingCache="true"
  android:clickable="false"
  android:focusable="false" />
</ViewSwitcher>

【问题讨论】:

    标签: android center


    【解决方案1】:

    将您的LinearLayout 的高度设置为wrap_content,它也应该垂直居中。此外,您应该在LinearLayout 上添加android:layout_gravity="center" 以使其居中于ViewSwitcher

    【讨论】:

    • 它不起作用。我什至在 ViewSwitcher 上也尝试过 wrap_content。它们始终保持在视图顶部的中心。
    • 糟糕,忘了说你也应该在 LinearLayout 上设置android:layout_gravity="center"。我会更新我的答案。
    【解决方案2】:

    使用下面的代码:

    <?xml version="1.0" encoding="utf-8"?>
    <ViewSwitcher
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/loadSwitcher"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:orientation="vertical"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical|center_horizontal"
            android:background="#ff000000">
            <ProgressBar
                android:indeterminate="true"
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:id="@+id/marker_progress"
                style="?android:attr/progressBarStyle"
                android:layout_gravity="center"
                />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="18sp"
                android:text="Loading data..." 
                />
        </LinearLayout>
        <ListView
            android:id="@+id/android:appCategoriesList"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:background="#ff918e8e"
            android:divider="#ff000000"
            android:dividerHeight="1dp"
            android:cacheColorHint="#00000000"
            android:scrollingCache="true"
            android:clickable="false"
            android:focusable="false" />
    </ViewSwitcher>
    

    【讨论】:

    • 使用此解决方案解决的问题:stackoverflow.com/questions/1957831/…
    • 当然。在适当的设置下,RelativeLayout 也能正常工作。我假设您想要使用 LinearLayout 的解决方案。
    猜你喜欢
    • 2020-01-27
    • 2010-12-13
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-16
    • 2015-03-01
    • 2017-12-13
    相关资源
    最近更新 更多