2015-09-22 3 views
0

У меня есть горизонтальная линейная компоновка, содержащая два макета. Я хочу, чтобы правильно макет был таким же широким, как и контент (wrap_content). слева макет должен заполнить оставшееся пространство.Android: макет с match_parent займет свободное место или оставить

Я пробовал с «match_parent» на левой макете («Относительная компоновка») и «wrap_content» на правой макете (Linear Layout), но в левом макете все пространство.

Как решить эту проблему, чтобы левая макет просто занимала пространство, которое осталось, а не все. Подобно тому, как разрешить правильную компоновку сначала занять свое место.

EDIT :: К сожалению, я хотел опубликовать фотографию, но не смог, вот код:

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

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#00ff27" 
    android:layout_gravity="bottom"> 
</RelativeLayout> 

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:baselineAligned="false" 
    android:layout_alignParentStart="true"> 

    <Button 
     android:layout_width="100dp" 
     android:layout_height="wrap_content" 
     android:text="New Button" 
     android:id="@+id/button" 
     android:layout_alignParentStart="true" /> 
</LinearLayout> 

Относительная Компоновка слева занимает все пространство (экран становится зеленый). Я хочу, чтобы относительная компоновка принимала ширину, которая остается от LinearLayout, поэтому вы можете видеть кнопку в макете.

+0

Добро пожаловать на SO. Пожалуйста, добавьте [mcve] подробную информацию о своем коде. – Adriaan

+1

k, сделано. Надеюсь, это поможет решить проблему. –

ответ

0

Android отображает представления в том порядке, в котором они отображаются в файле макета. Таким образом, ваш первый вид заполняет все доступное пространство, прежде чем второе представление имеет шанс заняться любым пространством. Одним из способов решения этой проблемы является создание корневой компоновки RelativeLayout вместо LinearLayout, позволяющей сначала поставить правую сторону. Другой вариант - оставить корень LinearLayout и использовать атрибут layout_weight. На ваш первый взгляд, вместо android:layout_width="match_parent", попробуйте android:layout_width="0dp" и android:layout_weight="1"

+0

NICE, он работает! Благодаря! Я попробовал второе решение, установив ширину в 0dp и вес в 1! –

0
<?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:weightSum="1" 
    android:orientation="horizontal"> 

    <RelativeLayout 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="bottom" 
     android:layout_weight="1" 
     android:background="#00ff27"></RelativeLayout> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:baselineAligned="false" 
     android:orientation="vertical"> 

     <Button 
      android:id="@+id/button" 
      android:layout_width="100dp" 
      android:layout_height="wrap_content" 
      android:text="New Button" /> 
    </LinearLayout> 
</LinearLayout> 
Смежные вопросы