2010-07-20 31 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,但希望提供另一種方式來做到這一點

相關問題