2015-08-02 1 views
2

У меня есть макет рамки внутри относительного макета, что все остальное расположено под ним. Как я могу сделать этот макет кадра занимающим половину всего экрана?Назначение FrameLayout как половина родительского RelativeLayout

Я попытался с весом, но это ничего не меняет ..

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
style="@style/mainLayoutStyle"> 

<FrameLayout 
     android:id="@+id/codeLayout" 
     style="@style/codeLayoutLargeStyle"> 

     <TextView 
      android:id="@+id/DisplayTextView" 
      style="@style/DisplayTextViewLargeStyle"/> 
</FrameLayout> 
...... 
..... 
    <LinearLayout 

ответ

2

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

Тогда вы используете неправильный макет в качестве родителя. Вы должны заменить RelativeLayout на LinearLayout, установить FrameLayout высоты до match_parent и android:layout_weight="1", а затем обернуть все, что вы хотите ниже всего, что нужно (относительное, линейное), гарантируя, что оно также установило высоту и layout_weight, как указано выше. После этого вы получите 50% высоту -50% расколоть

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

    <FrameLayout 
     android:layout_weight="1" 
     android:background="#ff0000" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 

    <RelativeLayout 
     android:layout_weight="1" 
     android:background="#0000ff" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 

</LinearLayout> 

enter image description here

+0

К сожалению, это не поможет ..:/ weird – BVtp

+0

Конечно, это 50-50 split. вы, должно быть, сделали что-то не так. см. отредактированный ответ. –

+0

ok Я могу видеть изображение на половине экрана, но все остальное перепутано. Дайте мне несколько минут, чтобы разобраться, может быть, вы на что-то :) – BVtp

0

Вес работает только с линейной планировкой, а не с относительным макетом

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    style="@style/mainLayoutStyle" 
    android:weightSum="100"> 

    <FrameLayout 
     android:id="@+id/codeLayout1" 
     style="@style/codeLayoutLargeStyle" 
android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="50"> 

    </FrameLayout> 


    <FrameLayout 
     android:id="@+id/codeLayout2" 
     style="@style/codeLayoutLargeStyle" 
android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="50"> 

    </FrameLayout> 

    </LinearLayout> 

дать каждый по высоте расположения 0dp и веса 50 и дать линейную макетную массу 100

+0

К сожалению, он сбой .. – BVtp

+0

Что он говорит в отчете о сбое –

+0

Я отредактировал свои анны и их правильно, и если он сработает, проверьте, есть ли ошибки проблема - это нечто иное –

0

Marcin is right, Weight Property будет действовать только тогда, когда вы берете родительский макет как линейную компоновку и для чтобы ваш макет кадра охватывал половину экрана, вам нужно взять два макета в качестве дочернего элемента этой линейной компоновки и разделить одинаковый вес.

например

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical"> 

<FrameLayout 
    android:id="@+id/you_frame_layout" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:background="#00ff00"> 

</FrameLayout> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1"> 

</RelativeLayout> 

Надеется, что это будет полезно для вас.

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