2016-05-19 1 views
0

Я только начал изучать Android и возникла проблема с реализацией специального макета. Я много читал о макетах и ​​пробовал все, что мне пришло в голову, но я не смог его решить. Наверное, это очень легко, и я был бы очень благодарен за вашу помощь!android layout: постоянный размер представления снизу

Мне нужен простой макет, имеющий более высокий вид сверху и меньший внизу. Нижний вид должен иметь постоянный размер 150dp, верхний вид должен быть переменным по высоте и заполнять остальные. Это не проблема, давая верхний постоянный размер и нижний остальные - но это еще не так, как мне это нужно ...

То упрощенный скриншот, как это должно выглядеть следующим образом:

Screenshot

Большое спасибо!

+0

нижний должен иметь высоту и ширину 150dp как? или только высота? –

+0

только высота. width соответствует match_parent для обоих представлений. – Raspberry

ответ

0

Здесь вы идете:

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

    <RelativeLayout 
     android:id="@+id/rl_layout_one" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@android:color/holo_blue_light" 
     android:layout_above="@+id/rl_layout_two"> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/ic_launcher" 
      android:layout_centerInParent="true"/> 
    </RelativeLayout> 

    <RelativeLayout 
     android:id="@+id/rl_layout_two" 
     android:layout_width="match_parent" 
     android:layout_height="150dp" 
     android:background="@android:color/darker_gray" 
     android:padding="15dp" 
     android:layout_alignParentBottom="true"> 
    </RelativeLayout> 


</RelativeLayout> 

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

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:weightSum="1"> 

<RelativeLayout 
    android:id="@+id/rl_layout_one" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@android:color/holo_blue_light" 
    android:layout_weight="0.4"> 

</RelativeLayout> 

<RelativeLayout 
    android:id="@+id/rl_layout_two" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@android:color/darker_gray" 
    android:padding="15dp" 
    android:layout_weight="0.6"> 
</RelativeLayout> 


</LinearLayout> 

Надеюсь, что эта помощь.

EDIT 1:

Проверьте первое решение, он пропускал layout_above атрибут, поэтому он принял все пространство экрана и по центру изображения в соответствии всем пространстве экрана. Теперь это не будет, поскольку макет один над макетом два, он будет центрировать ваше изображение в соответствии с макетом.

+0

Спасибо за ваш ответ! Я уже пробовал это и на первый взгляд, похоже, работает, но при размещении изображения с «layout_centerInParent» в верхнем представлении его в середине полного экрана (кажется, что нижние виды просто лежат над верхним). Если верхний вид получает высоту (например, 370 dp), а нижний вид не достигает высоты, он работает - но это не то, что мне нужно ... – Raspberry

+0

Я уже думал о вашем втором примере, но в этом специальном случае нижний вид является важным с постоянным размером, а другой может отличаться по размеру (он должен просто показывать изображение по центру). Спасибо vibhor_shri :-) – Raspberry

+0

Действительно ли нет? – Raspberry

Смежные вопросы