2010-07-20 83 views
24

以下XML代码不起作用在LinearLayout中居中的ImageView的:如何将一个ImageView放在一个LinearLayout中?

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <ImageView 
     android:id="@+id/myimg" 
     android:layout_width="36dip" 
     android:layout_height="36dip" 
     android:scaleType="fitXY" 
     android:layout_gravity="center_horizontal" 
     android:background="@drawable/my_background" 
    /> 
</LinearLayout> 

这是RelativeLayout的代码令人惊讶的作品:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <ImageView 
     android:id="@+id/myimg" 
     android:layout_width="36dip" 
     android:layout_height="36dip" 
     android:scaleType="fitXY" 
     android:layout_centerHorizontal="true" 
     android:background="@drawable/my_background" 
    /> 
</RelativeLayout> 

有人能告诉我为什么吗?谢谢!

+0

我永远无法得到的重力属性正常工作。我只会去相关的布局。 – Falmarri 2010-07-20 19:31:57

+0

如果没有缩放图像(scaleType),可以通过将android:layout_width =“36dip”更改为“fill_parent”来实现。 – 2010-07-20 20:35:37

+2

我总是遇到重力问题。你可能会尝试的一件事是将layout_gravity属性放在* parent * - LinearLayout上 - 而不是ImageView。 – MatrixFrog 2010-07-21 06:38:39

回答

2

的问题是,因为你使用Android:在的LinearLayout layout_width = “FILL_PARENT”。 其更改为“WRAP_CONTENT”

+0

此,不幸的是,仅使包装:线性布局界限实际上等于(相对于可能的填充和边缘),以该ImageView的代替定心一些更大的LinearLayout内的ImageView的。 – 2013-05-21 18:37:00

28

你必须设置垂直方向上你的LinearLayout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical"> 
<ImageView 
    android:id="@+id/myimg" 
    android:layout_width="36dip" 
    android:layout_height="36dip" 
    android:scaleType="fitXY" 
    android:layout_gravity="center_horizontal" 
    android:background="@drawable/my_background" 
/> 

+0

这个工作对我来说,很高兴回答 – 2013-12-23 19:47:18

7

什么通常工作对我来说,我紧裹的RelativeLayout内的ImageView时,将会进入LinearLayout确保relativelayout的高度和宽度属性与linearLayout匹配。而且您知道如何将imageview保留在相关布局的中心。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content"> 
       <RelativeLayout 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" 
         <ImageView 
          android:id="@+id/myimg" 
          android:layout_width="36dip" 
          android:layout_height="36dip" 
          android:scaleType="fitXY" 
          android:orientation="vertical" 
          android:layout_gravity="center_horizontal" 
          android:background="@drawable/my_background" 
         /> 
       </RelativeLayout> 
    </LinearLayout> 
+2

这有什么错的LinearLayout家伙??? – 2013-05-21 19:10:10

2
<LinearLayout 
    android:orientation="horizontal" 
    android:layout_width="0dp" 
    android:layout_weight="0.50" 
    android:gravity="center" 
    android:layout_height="wrap_content"> 
    <ImageView 
     android:id="@+id/addToDateOrReceipt" 
     android:layout_width="25dp" 
     android:layout_height="25dp" /> 
</LinearLayout> 

设置了android:你LineraLayout到中心的引力性质。

12

很抱歉,但上面的代码,我没有工作,所以我张贴我的守则,工作对我来说是

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/colorPrimary" 
    android:gravity="center_horizontal|center_vertical" 
    android:orientation="vertical"> 

    <ImageView 
     android:id="@+id/ivPic" 
     android:layout_width="70dp" 
     android:layout_height="70dp" /> 

</LinearLayout> 

我希望它可以帮助别人谁需要。

+1

这对我来说是有帮助的,所以,我给予好评的答:) – 2017-11-10 09:09:20

+1

完美工作了me.Thanks! – 2018-02-17 11:37:19

0

你也可以用的FrameLayout使它和它里面的LinearLayout所以它更容易管理,更容易把它放在视图的中心。

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

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

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/app_name" /> 

    <ImageView 
     android:id="@+id/ivPic" 
     android:layout_width="70dp" 
     android:layout_height="70dp" /> 
</LinearLayout> 
</FrameLayout> 

我知道你是问有关如何在布局上居中的ImageView,但希望提供另一种方式来做到这一点

相关问题