2011-08-11 10 views
0

ここで画像を中央にしないXMLです:centerHorizo​​ntalは正しく

<?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" 
       android:background="@drawable/bg" 
     > 
    <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="0dp" 
      android:layout_weight="4" 
      android:orientation="vertical" 
      > 
     <RelativeLayout 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:gravity="center_horizontal" //CENTER 01 
       > 
      <!--center button--> 
      <ImageView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:src="@drawable/img" 
        android:layout_centerVertical="true" 
        android:layout_centerHorizontal="true" //CENTER 02 
        /> 
     //...    
     </RelativeLayout>   
    </LinearLayout> 
    <include android:id="@+id/banner" layout="@layout/banner" 
      android:layout_weight="1" 
      android:layout_gravity="bottom"/> 
</LinearLayout> 

中央のボタンは中央には、ではなく、画面の本当の中心にあるのではなく、およそ中央の右側には50px。 centerHorizontal CENTER01を削除すると、これは発生しません。

なぜこのようなことが起こっているのですか?

+0

CENTER01を削除しても問題ないですか? –

答えて

1

この問題が原因XMLファイル内の相対的なレイアウトとリニアレイアウトの両方で使用することがあります。あなたは予想通り

変更すべてリニアレイアウトへの相対レイアウトのでそのイメージビューが中央に表示されます。

私も1つのXMLで線形レイアウトと相対レイアウトの両方を混在させ、この種の問題に直面しています。すべての線形レイアウトを相対レイアウトに置き換えたら、私の問題は解決しました。

は、あなたが親にandroid:gravity="center_horizontal"を設定すると、それはその子の行動に影響を与えるit.Thanks.Venky

3

//CENTER 02のために試してみてください:

android:layout_centerInParent="true" 
1

を試してみてください。したがって、ImageViewが有効になり、他のプロパティによって既に中央に配置された後に表示されるエフェクトが作成されます。

TextViewandroid:layout_width="fill_parent"に配置すると、この効果を自分で見ることができます。

1

相対レイアウトのため、center_horizo​​ntalはコマンドではありません。線形レイアウトでラップされたビューに対して機能します。 RelativeLayoutのためにあなたは、線形で重力center_horizo​​ntalとしてリニア

または

android:layout_centerHorizontal="true" 

に中央重力コマンドとして

android:layout_centerInParent="true";

を使用する必要があります。

関連する問題