我有线性布局和图像......
<?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>
如何动态居中我的图像,使其显示在所有设备的屏幕中央?
答案 0 :(得分:117)
在LinearLayout
中,使用:android:layout_gravity="center"
。
在RelativeLayout
中,使用:android:layout_centerInParent="true"
。
答案 1 :(得分:56)
如果您使用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>
如果您使用的是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>
答案 2 :(得分:12)
从技术上讲,上述两个答案都是正确的,但由于您将ImageView设置为fill_parent
而不是wrap_content
,因此其中的图像不会居中,但ImageView本身就是。
为ImageView提供属性:
android:scaleType="centerInside"
android:gravity="center"
如果图像超出ImageView的大小,则仅在这种情况下需要scaleType。您可能还需要不同的scaleTypes。总之,在这种情况下,android:gravity
是您正在寻找的,但如果您的ImageView设置为wrap_content
,则应将ImageView的重力(android:layout_gravity
)设置为居中于父节点。
答案 3 :(得分:3)
只需将其添加到您的ImageView。
android:layout_gravity="center"
答案 4 :(得分:2)
以下两种方法可以在LinearLayout中垂直和水平居中显示图像(或图像)。
(1)在ImageView中使用android:layout_gravity =“center”属性
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
layout_height="wrap_content"
android:src="@drawable/icon"
android:layout_gravity="center"/>
</LinearLayout>
这是如何工作的: ImageView中的android:layout_gravity =“center”属性本身(即图像)垂直和水平相对于其父级(LinearLayout)。
- 或 -
(2)或者,您可以在LinearLayout中使用android:gravity =“center”属性,并在ImageView中省略android:layout_gravity =“center”属性:
<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:id="@+id/imageView1"
android:layout_width="wrap_content"
layout_height="wrap_content"
android:src="@drawable/icon"
android:layout_gravity="center"/>
</LinearLayout>
这是如何工作的:LinearLayout中的android:gravity =“center”属性其子/ (在这种情况下,它是图像)垂直和水平强>
答案 5 :(得分:2)
首先,你需要使用'match_parent'并且不要在LinearLayout声明中使用'fill_parent',你可以查看“官方 文档“这里 https://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html#MATCH_PARENT 另一个观察是你需要使用ImageView作为孩子,然后使用ImageView应该自动关闭;这个 意味着它应该以'/&gt;'结尾。 然后让我向您展示一些快速的想法: 1-以自然的方式
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
><ImageView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/imageView1"
android:src="@drawable/ocean" android:scaleType="center"/> </LinearLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
/><ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageView1"
android:scaleType="center"/><ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageView1"
android:src="@drawable/ocean"
android:scaleType="center"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageView1"
android:background="#ffffff"
android:scaleType="center"/></LinearLayout>
然后看起来像
3-其他想法可以以这种方式诞生,例如这一点
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
><ImageView
android:layout_width="300dp"
android:layout_height="80dp"
android:id="@+id/imageView1"
/><ImageView
android:layout_width="300dp"
android:layout_height="80dp"
android:id="@+id/imageView1"
android:src="@drawable/ocean"
/>
<ImageView
android:layout_width="300dp"
android:layout_height="80dp"
android:id="@+id/imageView1"
/> </LinearLayout>
喜欢这样
其他可能性
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
><ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/ocean"
android:id="@+id/imageView1"
android:scaleType="center"/><ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageView1"
android:background="#ffffff"
android:scaleType="center"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageView1"
android:background="#ffffff"
android:src="@drawable/ocean"
android:scaleType="center"/></LinearLayout>
正如我们所看到的,您可以使用“隐藏空间”或“带背景颜色的空间”来快速解决一些麻烦,显然,这并非总是存在的可能性
答案 6 :(得分:1)
另一种方法。 (在相对测试中,但我认为在线性也会起作用)
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:adjustViewBounds="true"
android:gravity="center"
如果您使用Eclipse,则可以在* .xml文件处于活动状态时选择图形布局。在顶部,您将找到结构和选项调整视图边界。它会将伪框架(蓝色矩形)的所有尺寸缩短到可绘制文件的大小。
另请参阅scaleType选项,将make搞定为您的图像。在Eclipse中尝试;)
答案 7 :(得分:1)
这对我有用
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:gravity="center"
android:orientation="horizontal" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/Logo"
android:gravity="center"
android:scaleType="centerInside"
android:src="@drawable/logo" />
</LinearLayout>
答案 8 :(得分:1)
对我来说是什么
LinearLayout
RelativeLayout
<ImageView
width...
height..
---> android:layout_centerHorizontal="true"
喝彩!
答案 9 :(得分:1)
你也可以使用它,
android:layout_centerHorizontal="true"
图像将放置在屏幕中央
答案 10 :(得分:0)
试试这个。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:gravity="center"
android:orientation="horizontal" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:scaleType="centerInside"
android:src="@drawable/logo" />
</LinearLayout>
答案 11 :(得分:0)
android:scaleType =“ centerInside” ->此行用于使图像居中,但是您需要将图像的高度和宽度保持为wrap_context
<ImageView
android:id ="@+id/imageView6"
android:layout_width ="wrap_content"
android:layout_height ="wrap_content"
android:scaleType ="centerInside"
android:layout_marginTop ="20dp"
app:srcCompat ="@drawable/myimage" />
答案 12 :(得分:-1)
根据你的意愿改变布局重量......
输入:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="0.03">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:scaleType="centerInside"
android:layout_gravity="center"
android:src="@drawable/logo" />
</LinearLayout>