2013-07-02 7 views
1

Я не понимаю, как размер ImageView работает на относительной раскладку, имеющий вес определяетсяLinearLayout с RelativeLayout имея ImageView внутри не уважает вес Constraint

Это мой код:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/LinearLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context=".CameraActivity" > 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0px" 
     android:layout_weight="76" > 

     <ImageView 
      android:id="@+id/imagePreview" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:scaleType="centerCrop" 
      android:src="@drawable/photo_placeholder" /> 

     <Button 
      android:id="@+id/timeButton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentTop="true" 
      android:onClick="onClick" 
      android:text="Button" /> 

    </RelativeLayout> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="0px" 
     android:layout_weight="24" > 

     <ImageButton 
      android:id="@+id/mainButton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerHorizontal="true" 
      android:layout_centerVertical="true" 
      android:background="#0fff" 
      android:src="@drawable/cam_main_btn_normal" /> 

     <ImageButton 
      android:id="@+id/nextButton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentRight="true" 
      android:layout_centerVertical="true" 
      android:layout_marginRight="22dp" 
      android:background="#0fff" 
      android:src="@drawable/gs_05_check_normal" /> 

     <ImageButton 
      android:id="@+id/cancelButton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_centerVertical="true" 
      android:layout_marginLeft="22dp" 
      android:background="#0fff" 
      android:src="@drawable/cam_cancel" /> 
    </RelativeLayout> 

</LinearLayout> 

и я получить Wrong result , но если я удалю изображение он показывает габариты правильно, как я ожидаю, Result without imageView

Таким образом, вопрос, как Shou ld Я делаю, чтобы заставить imageView взять все пространство, соответствующее весу относительно относительной компоновки?

Я попытался изменить андроид: layout_width, android: layout_height изображенияView to wrap_content (не имеет смысла, но просто «проверка») это не работает. Я пробовал с и без scaleType и разных значений, не менялся.

Я думаю, что ImageView нуждается в каком-то трюке/магии?

- EDIT - Я ожидаю, что изображение будет размером highligted синего цвета на втором screenshoot :) - EDIT - То, что я хочу добиться: The result I want to achieve

+1

android: weightSum = 100 на родительском LinearLayout? –

+0

Эта проблема существует с простым представлением – jrmgx

+0

@DavidOlsson, к сожалению, я уже пробовал это, и он не работает. – jrmgx

ответ

0

еще не получаете то, что вы пытаетесь, свой путь для работы с весом может быть w Ронг. но попробуйте эту демонстрацию, надеюсь, что это поможет вам понять вес.

просто вставьте его в xml.

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

    <RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight=".80" > 

     <ImageView 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:background="@drawable/ic_launcher" /> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Button" /> 
    </RelativeLayout> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight=".20" > 

     <ImageButton 
      android:layout_width="0dp" 
      android:layout_height="fill_parent" 
      android:layout_weight="33.33" 
      android:background="@drawable/ic_launcher" /> 

     <ImageButton 
      android:layout_width="0dp" 
      android:layout_height="fill_parent" 
      android:layout_weight="33.33" 
      android:background="@drawable/ic_launcher" /> 

     <ImageButton 
      android:layout_width="0dp" 
      android:layout_height="fill_parent" 
      android:layout_weight="33.33" 
      android:background="@drawable/ic_launcher" /> 
    </LinearLayout> 

</LinearLayout> 

еще если запрос о весе, то плз спросить.

+1

Верхняя относительная компоновка составляет 80%, а линейная линейная компоновка - 20%. То же, что и у адвоката. Макет имеет 3 части 33,33%. – Rumit

+0

Приятный пример для подставки layout_width. + 1 брат для приятного примера. –

+0

Высота 0dp сделала трюк для меня. Android так глуп иногда. –

0

В Дело в том, что код был хорошим, и это больше затмения «предварительный просмотр» ошибка, как это работает на устройстве (не было возможности протестировать раньше)

Sorry все

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