#android #android-layout #android-linearlayout #layout-gravity
#Android #android-макет #android-linearlayout #макет-гравитация
Вопрос:
У меня следующий базовый макет
<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>
Кажется, что xml правильный, но текст выровнен по левому краю. Текстовое представление занимает всю ширину родительского элемента, а текстовое представление установлено по центру. Не уверен, в чем проблема…
Комментарии:
1. попробуйте android: gravity =»center» для вашего текстового представления
Ответ №1:
Происходит то, что, поскольку текстовое представление заполняет всю ширину внутреннего LinearLayout, оно уже находится в горизонтальном центре макета. При использовании android:layout_gravity
он помещает виджет в целом в указанное значение тяжести. Вместо размещения всего виджета в центре, что вы действительно пытаетесь сделать, это поместить содержимое в центр, что может быть выполнено с android:gravity="center_horizontal"
android:layout_gravity
помощью атрибута, который можно удалить.
Комментарии:
1. Если я правильно понимаю, он мог бы изменить «android: layout_width=»fill_parent» на «wrap_content», а затем использовать android:layout_gravity =»center_horizontal». Я прав?
2. @bluesm Нет, внутренний LinearLayout не позволяет себе иметь пространство, которое не заполнено представлением (не считая случая пустого LinearLayout). Таким образом
android:layout_width
, значение будет иметь то же значение (после компоновки). Поскольку ширина текстового представления равна с внутреннего линейного представления, текстовое представление фактически имеетandroid:layout_gravity
значенияleft
,right
, иcenter
в то же время.3. Для
ImageView
егоlayout_gravity
и дляTextView
егоgravity
— это то, что работает только . Android — это здорово ! Спасибо всем прекрасным постам SO, без которых разработка была просто невозможна.4. не забывайте о
android:layout_width="match_parent"
Ответ №2:
Если вы устанавливаете <TextView>
в центр, <Linearlayout>
то сначала ставите android:layout_width="fill_parent"
обязательный
, нет необходимости использовать какую-либо другую гравитацию
<LinearLayout
android:layout_toRightOf="@ id/linear_profile"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:orientation="vertical"
android:gravity="center_horizontal">
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="It's.hhhhhhhh...."
android:textColor="@color/Black"
/>
</LinearLayout>
Ответ №3:
<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:gravity="center"
android:textAppearance="?android:attr/textAppearanceLarge"
android:padding="10dp"
android:text="HELLO WORLD" />
</LinearLayout>
Ответ №4:
Используйте android:gravity="center"
TextView
вместо layout_gravity
.
Комментарии:
1. Короткий и точный ответ. Спасибо
Ответ №5:
Просто используйте: android:layout_centerHorizontal=»true»
Это поместит весь текстовый вид в центр