私はImageView
をLinearLayout
の水平方向と垂直方向の中央に配置しようとしていますが、できません。私がRelativeLayout
を使用しない主な理由は、layout_weight
が必要なためです(私のActivity
は、均等に分割される4つの列で構成され、それぞれの列はImageView
を中央に配置し、伸縮しません)。
これが私のxmlです。
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="#000"
Android:baselineAligned="false"
Android:gravity="center"
Android:paddingBottom="@dimen/activity_vertical_margin"
Android:paddingLeft="@dimen/activity_horizontal_margin"
Android:paddingRight="@dimen/activity_horizontal_margin"
Android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".Main" >
<LinearLayout
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:layout_weight="1" >
<ImageView
Android:id="@+id/imageButton_speak"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/image_bg"
Android:src="@drawable/ic_speak" />
</LinearLayout>
<LinearLayout
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:layout_weight="1" >
<ImageView
Android:id="@+id/imageButton_readtext"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/image_bg"
Android:src="@drawable/ic_readtext" />
</LinearLayout>
<LinearLayout
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:layout_weight="1" >
<ImageView
Android:id="@+id/imageButton_edit"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/image_bg"
Android:src="@drawable/ic_edit" />
</LinearLayout>
<LinearLayout
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:layout_weight="1" >
<ImageView
Android:id="@+id/imageButton_config"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/image_bg"
Android:src="@drawable/ic_config" />
</LinearLayout>
</LinearLayout>
Android:gravity
はその子のアラインメントを処理します、
Android:layout_gravity
はそれ自身のアライメントを処理します。
それで、これらのうちの1つを使ってください。
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="#000"
Android:baselineAligned="false"
Android:gravity="center"
Android:paddingBottom="@dimen/activity_vertical_margin"
Android:paddingLeft="@dimen/activity_horizontal_margin"
Android:paddingRight="@dimen/activity_horizontal_margin"
Android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".Main" >
<LinearLayout
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_weight="1"
Android:gravity="center" >
<ImageView
Android:id="@+id/imageButton_speak"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/image_bg"
Android:src="@drawable/ic_speak" />
</LinearLayout>
<LinearLayout
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_weight="1"
Android:gravity="center" >
<ImageView
Android:id="@+id/imageButton_readtext"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/image_bg"
Android:src="@drawable/ic_readtext" />
</LinearLayout>
...
</LinearLayout>
または
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="#000"
Android:baselineAligned="false"
Android:paddingBottom="@dimen/activity_vertical_margin"
Android:paddingLeft="@dimen/activity_horizontal_margin"
Android:paddingRight="@dimen/activity_horizontal_margin"
Android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".Main" >
<LinearLayout
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:layout_weight="1" >
<ImageView
Android:id="@+id/imageButton_speak"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:background="@drawable/image_bg"
Android:src="@drawable/ic_speak" />
</LinearLayout>
<LinearLayout
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:layout_weight="1" >
<ImageView
Android:id="@+id/imageButton_readtext"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:background="@drawable/image_bg"
Android:src="@drawable/ic_readtext" />
</LinearLayout>
...
</LinearLayout>
Android:layout_gravity
はレイアウト自体に使用されます
LinearLayout
の子にはAndroid:gravity="center"
を使用してください
だからあなたのコードは次のようになります。
<LinearLayout
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:gravity="center"
Android:layout_weight="1" >
私はここで解決策を試しましたが、私は問題を抱えています、そして私がlayout_width
で間違っていると思ういくつかの変更を試してみてくださいwrap_content
はこのように
<LinearLayout
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:gravity="center"
Android:layout_weight="1" >
これがサンプルコードです。これは私のために働きました。
<LinearLayout
Android:gravity="center"
>
<TextView
Android:layout_gravity="center"
/>
<Button
Android:layout_gravity="center"
/>
</LinearLayout>
そのため、すべてのコンテンツ(TextViewとButton)を中央に配置するようにLinear Layoutを設計し、TextViewとButtonはLinear Layoutの中央を基準にして配置します。