Mam następujący podstawowy układ
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/title_bar_background">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:textAppearance="?android:attr/textAppearanceLarge"
android:padding="10dp"
android:text="HELLO WORLD" />
</LinearLayout>
<LinearLayout>
Wygląda na to, że xml jest poprawny, ale tekst jest wyrównany do lewej. Widok tekstu zajmuje całą szerokość elementu nadrzędnego, a widok tekstu jest wyśrodkowany. Nie jestem pewna na czym polega problem...
android
android-layout
android-linearlayout
layout-gravity
Jake Wilson
źródło
źródło
Odpowiedzi:
Dzieje się tak, ponieważ TextView wypełnia całą szerokość wewnętrznego LinearLayout, jest już w poziomym środku układu . Kiedy
android:layout_gravity
go używasz , umieszcza widżet jako całość w określonej grawitacji. Zamiast umieszczać całe centrum widżetów, tak naprawdę próbujesz umieścić zawartość w środku, co można wykonać,android:gravity="center_horizontal"
aandroid:layout_gravity
atrybut można usunąć.źródło
android:layout_width
będą miały tę samą wartość (po układzie). Ponieważ szerokość TextView jest równy z wewnętrznej LinearLayout TextView skutecznie maandroid:layout_gravity
wartościleft
,right
icenter
w tym samym czasie.ImageView
ITSlayout_gravity
orazTextView
jegogravity
jest to, co tylko działa. Android jest świetny! Dzięki wszystkim pięknym słupkom SO, bez których rozwój byłby po prostu niemożliwy.android:layout_width="match_parent"
źródło
Jeśli ustawisz
<TextView>
w środku,<Linearlayout>
to najpierw ustawandroid:layout_width="fill_parent"
obowiązkoweNie ma potrzeby używania innej grawitacji
źródło
Użyj
android:gravity="center"
wTextView
zamiastlayout_gravity
.źródło
Po prostu użyj: android: layout_centerHorizontal = "true"
Spowoduje to umieszczenie całego widoku tekstu w środku
źródło