Android 垂直和水平中心

Android 垂直和水平中心,android,xml,imageview,android-linearlayout,center,Android,Xml,Imageview,Android Linearlayout,Center,我可以将图像水平居中,但不能垂直居中。。你知道是什么引起的吗?它应该在屏幕的中央。我也试过安卓:layout\u gravity=“center\u vertical”,但似乎没用 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.androi

我可以将图像水平居中,但不能垂直居中。。你知道是什么引起的吗?它应该在屏幕的中央。我也试过安卓:layout\u gravity=“center\u vertical”,但似乎没用

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/splash"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:src="@drawable/splash" />

</LinearLayout>

线性布局不允许此行为。试试相对论吧

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/splash"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:src="@drawable/splash" />

</RelativeLayout>

为什么需要线性布局?您可以使用scaleType=center的ImageView

<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/splash"
    android:src="@drawable/splash"
    android:scaleType="center" />


这就是您的全部xml…

您必须使用RelativeLayout来处理此类行为。我想不出一个用线性布局的好方法。此外,您可以尝试图形布局(取决于您使用的编辑器)。

我在不可见模式下使用了两个图像,只是为了创建空间。
试试这个:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/fake"
        android:layout_width="wrap_content"
        android:layout_height="200dp"
        android:src="@drawable/splash"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/splash"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:src="@drawable/splash" />

    <ImageView
        android:id="@+id/fake"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:src="@drawable/splash"
        android:visibility="invisible" />

</LinearLayout>


是否没有办法在线性布局中使图像居中?没有内置的好方法,也没有。LinearLayout的作用类似于HTML—它从上到下构建。垂直方向的布局重力不起作用,因为持续测量该值太昂贵了。我猜OP最终想在他的视图中放置的不仅仅是图像。