Почему кнопка не центрирована по вертикали в LinearLayout?

У меня есть 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" не разрешило проблему в моем вопросе.

Solutions Collecting From Web of "Почему кнопка не центрирована по вертикали в LinearLayout?"

Вы говорите словами, что хотите, чтобы это было вертикально вертикально, но вы не сказали в XML, что хотите, чтобы это было по центру по вертикали. Вам нужно будет настроить атрибут android:layout_gravity чтобы указать как right и center_vertical .

Тем не менее, я бы порекомендовал вам вернуться к RelativeLayout . Используйте android:layout_centerVertical="true" и android:layout_alignParentRight="true" чтобы кнопка была центрирована по вертикали и по правому краю.

Кроме того, имейте в виду, что ваш текущий LinearLayout имеет android:layout_height="wrap_content" , что означает, что внутри нечего центрировать. Вам нужно, чтобы контейнер имел больше места, чем его содержимое (например, fill_parent ), если вы хотите, чтобы центрирование имело какое-либо значение.

Этот код поместит кнопку в вертикальном центре и на правом экране

 <?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> 

Попробуйте добавить android: gravity = "center" к вашему LinearLayout. Я помню, что где-то читал, что это может сделать трюк.