У меня есть LinearLayout, который содержит только одну кнопку. Я хочу, чтобы эта кнопка была центрирована по вертикали и выровнена вправо. Я пробовал много способов, но я не мог сделать эту кнопку по центру вертикально. Он всегда совпадает с вершиной. Я также попытался поместить кнопку в RelativeLayout, кнопка также не может быть центрирована по вертикали.
XML выглядит следующим образом. Что-то не так с этим макетом? Спасибо.
<?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="wrap_content"
android:background="#E8E3E4">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="More"
android:layout_gravity="right" />
</LinearLayout>
Изменение андроида: layout_gravity = "right" to android: layout_gravity = "right | center_vertical" не разрешило проблему в моем вопросе.
Ответ 1
Вы говорите словами, что хотите, чтобы это было вертикально по центру, но вы не сказали в XML, что хотите, чтобы это было по центру по вертикали. Вам нужно будет настроить свой атрибут android:layout_gravity
, чтобы указать как right
, так и center_vertical
.
Однако я бы порекомендовал вам вернуться к RelativeLayout
. Используйте android:layout_centerVertical="true"
и android:layout_alignParentRight="true"
, чтобы кнопка была центрирована по вертикали и по правому краю.
Также учтите, что ваш текущий LinearLayout
имеет android:layout_height="wrap_content"
, что означает, что внутри нечего центрировать. Вам нужно, чтобы контейнер имел больше места, чем его содержимое (например, fill_parent
), если вы хотите, чтобы центрирование имело какое-либо значение.
Ответ 2
Этот код поместит кнопку в вертикальном центре и на правом экране
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="center_vertical">
<Button
android:id="@+id/btnClick"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="Click Me" />
</LinearLayout>
Ответ 3
Попробуйте добавить android: gravity = "center" к вашему LinearLayout. Я помню, что где-то читал, что это может сделать трюк.