Próbuję wyśrodkować ImageView
wnętrze a LinearLayout
poziomo i pionowo, ale po prostu nie mogę tego zrobić. Głównym powodem, dla którego nie używam RelativeLayout
do tego celu, jest to, że potrzebuję layout_weight
(moja Activity
składa się z czterech kolumn, które powinny być równo podzielone, a także reagować na różne szerokości ekranu, a każda kolumna maImageView
wyśrodkowaną i nierozciągniętą).
Oto mój dotychczasowy 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>
Odpowiedzi:
android:gravity
obsługuje wyrównanie swoich dzieci,android:layout_gravity
sama obsługuje wyrównanie.Więc użyj jednego z nich.
lub
źródło
android:layout_gravity
jest używany do samego układuUżywaj
android:gravity="center"
dla swoich dzieciLinearLayout
Więc twój kod powinien wyglądać następująco:
źródło
Próbowałem rozwiązań wymienionych tutaj, ale to mi nie pomogło. Myślę, że rozwiązaniem jest
layout_width
użyciewrap_content
wartości.źródło
Oto przykładowy kod. To zadziałało dla mnie.
Więc projektujesz układ liniowy, aby umieścić całą jego zawartość (TextView i przycisk) w jego środku, a następnie TextView i przycisk są umieszczane względem środka układu liniowego.
źródło
android:gravity
może być użyty w Layout, aby wyrównać jego elementy podrzędne.android:layout_gravity
może być używany w dowolnym widoku, aby wyrównać się w swoim nadrzędnym.źródło