Android:以图片为中心

我有一个线性布局和图像…

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

我如何dynamic调整图像的中心位置,使其在所有设备的屏幕中间出现?

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

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

如果您正在使用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> 

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

给你的ImageView的属性:

 android:scaleType="centerInside" android:gravity="center" 

如果图像超出ImageView的大小,scaleType实际上只在这种情况下是必需的。 您可能还需要不同的缩放types。 总之,在这种情况下, android:gravity就是你要找的东西,但是如果你的ImageView被设置为wrap_content ,那么你应该把ImageView的gravity( android:layout_gravity )设置为居中。

只需将其添加到您的ImageView。

 android:layout_gravity="center" 

这里有两种方法可以在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”属性垂直水平居中它的子/子 (在这种情况下,它是图像)。

另一种方法。 (在相对testing,但我认为在线性也将起作用)

  android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:adjustViewBounds="true" android:gravity="center" 

如果您使用Eclipse,则可以在* .xml文件处于活动状态时selectgraphics布局。 在顶部,你会发现结构和选项调整视图边界。 它将缩小伪帧(蓝色矩形)的所有尺寸为可绘制文件的大小。

另请参见scaleType选项,使您的图像变得有趣。 在Eclipse中尝试;)

这对我有效

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

你也可以用这个,

 android:layout_centerHorizontal="true" 

图像将被放置在屏幕的中心

尝试这个。

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

这对我来说是什么

 LinearLayout RelativeLayout <ImageView width... height.. ---> android:layout_centerHorizontal="true" 

干杯!

改变布局的重量,你会得到….

input这个:

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