Android:中心视图内容不垂直居中

时间:2011-07-14 16:53:03

标签: android center

我试图让ProgressBar和TextView在ViewSwitcher中居中。它们可以垂直放置在彼此之上,但如果它们彼此水平居中,则没有问题。我可以让它们水平居中但不垂直居中。看起来外部视图(ViewSwitcher)的高度不会垂直填充,尽管每个父视图都有android:layout_height =“fill_parent”

这是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>

2 个答案:

答案 0 :(得分:2)

LinearLayout的身高设置为wrap_content,并将其垂直居中。另外,您应在android:layout_gravity="center"上添加LinearLayout,将其置于ViewSwitcher

的中心位置

答案 1 :(得分:1)

使用以下代码:

<?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>