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>