Просмотр в центре макета, если достаточно места

У меня есть макет и нужно разместить одно из видов в центре. Это просто. Проблема в том, что у меня также есть некоторые другие виды, которые нужно расположить в верхней части экрана.

Проблема. Если пространства достаточно, все выглядит нормально, но когда экран слишком мал, верхний и центральный элементы перекрываются .

Вопрос: Как нажимать «центрированный» элемент вниз, если экран мал?

Оригинальная компоновка очень сложная, я подготовил пример:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/theOneAtTheTop" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Some long text which may overlap the lower view. Some long text which may overlap the lower view." android:layout_alignParentTop="true" /> <TextView android:id="@+id/theOneInTheMiddlep" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Some long text which may overlap the upper view. Some long text which may overlap the upper view. " android:layout_centerInParent="true" /> </RelativeLayout> 

Вот небольшая симуляция. Среднее изображение показывает, как оно выглядит на маленьком экране, а на снимках по сторонам отображается желаемая ситуация.

Solutions Collecting From Web of "Просмотр в центре макета, если достаточно места"

Я действительно сомневаюсь, что вы можете сделать это непосредственно в файле макета, поскольку XML-макет не является местом для такой условной логики. Единственная реальная ситуация, когда вы могли (я думаю) использовать файл макета, была бы, если бы вы знали точные размеры рассматриваемых представлений, плюс уровень API для приложения был бы 3.2 , создавая множество макетов для разных ситуаций (что я действительно сомнения).

Если вы центрируете одно из представлений в RelativeLayout оно будет сосредоточено независимо от того, что у него нет понятия совпадающих представлений на уровне файла макета xml. В коде другое дело.

Ну, я полностью меняю этот ответ. Если желаемое выравнивание является вертикальным, вы можете поместить свой код внутри RelativeLayout, который будет _fill_parent_ и будет находиться ниже уровня OneAtTheTop. Внутри этого объекта вы можете поместить вид, который хотите вертикально выровнять по центру.

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/theOneAtTheTop" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:text="Some long text which may overlap the lower view. Some long text which may overlap the lower view." /> <RelativeLayout android:layout_width="match_parent" android:layout_height="fill_parent" android:layout_below="@+id/theOneAtTheTop" > <TextView android:id="@+id/theOneInTheMiddlep" android:layout_width="200sp" android:layout_height="wrap_content" android:layout_centerVertical="true" android:text="Some long text which may overlap the upper view. long text which may overlap the upper view. Some long text which may overlap the upper view. " /> </RelativeLayout> </RelativeLayout> 

Надеюсь, поможет

Просто добавьте android:layout_below="@+id/theOneAtTheTop" ко второму TextView, и вам хорошо идти.

 <TextView android:id="@+id/theOneAtTheTop" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Some long text which may overlap the lower view. Some long text which may overlap the lower view.Some long text which may overlap the lower view. Some long text which may overlap the lower view.Some long text which may overlap the lower view. Some long text which may overlap the lower view.Some long text which may overlap the lower view. Some long text which may overlap the lower view.Some long text which may overlap the lower view. Some long text which may overlap the lower view.Some long text which may overlap the lower view. Some long text which may overlap the lower view." android:layout_alignParentTop="true" /> <TextView android:id="@+id/theOneInTheMiddlep" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/theOneAtTheTop" android:text="Some long text which may overlap the upper view. Some long text which may overlap the upper view. " android:layout_centerInParent="true" /> </RelativeLayout>