Android:居中图片

Ski*_*zit 44 android android-layout

我有线性布局和图像......

<?xml version="1.0" encoding="utf-8"?>

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

<ImageView android:layout_width="wrap_content" android:id="@+id/imageView1"
 android:src="@drawable/icon" android:layout_height="wrap_content"
 android:scaleType="center"></ImageView>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

如何动态居中我的图像,使其显示在所有设备的屏幕中央?

Wro*_*lai 121

LinearLayout,使用:android:layout_gravity="center".

RelativeLayout,使用:android:layout_centerInParent="true".

  • @Szizit:我建议使用`RelativeLayout`而不是`LinearLayout`. (5认同)
  • 这可以作为#1答案删除,因为它*不*工作. (3认同)
  • 在`RelativeLayout`中,还有选项`layout_centerHorizo​​ntal`和`layout_centerVertical`. (2认同)

Hou*_*ine 59

如果您使用的是LinearLayout,请使用以下gravity属性:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">

    <ImageView android:layout_width="wrap_content"
        android:id="@+id/imageView1"
        android:src="@drawable/icon"
        android:layout_height="wrap_content"
        android:scaleType="centerInside" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

如果您使用的是RelativeLayout,您可以使用android:layout_centerInParent如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/icon"
        android:scaleType="centerInside"
        android:layout_centerInParent="true" />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

  • 我很惊讶没有人投票给这个答案,因为它是唯一一个对我有用的人.谢谢! (10认同)

kco*_*ock 12

从技术上讲,上面的两个答案都是正确的,但由于您将ImageView设置为fill_parent而不是wrap_content,因此内部的图像不是居中的,而是ImageView本身.

为ImageView提供属性:

android:scaleType="centerInside"
android:gravity="center"
Run Code Online (Sandbox Code Playgroud)

如果图像超过ImageView的大小,则仅在这种情况下需要scaleType.您可能还需要不同的scaleTypes.总之,android:gravity在这种情况下,您正在寻找的是,但如果您的ImageView设置为wrap_content,则应将ImageView的gravity(android:layout_gravity)设置为在父级中居中.