2017-02-09 4 views
-1

У меня странная проблема в Android. У меня есть LinearLayout ниже ListView. Список имеет ширину 0dp и layout_weight из 90. Линейный макет layout_weight равен 10. и height 0dp. На устройстве исчезает линейный выход.Ориентация Android правильная в дизайнере, но неправильная в устройстве

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

    <ListView android:id="@+id/chatsListView" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="90" 
     android:divider="@null" 
     android:dividerHeight="0dp" 
     android:listSelector="@android:color/transparent" 
     android:transcriptMode="alwaysScroll" 
     /> 
    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="10" 
     android:padding="10dp"> 
     <EditText 
      android:id="@+id/messageEditText" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:inputType="textMultiLine" 
      android:hint="type message here" 
      android:ems="10"/> 

     <ImageButton 
      android:id="@+id/sendMessageButton" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:background="@drawable/send_button"/> 

    </LinearLayout> 

</LinearLayout> 

Мне нужно знать, что это проблема выше, я не хочу делать это по-другому. Я делаю этот проект, чтобы научиться логически, а не копировать пасту.

Вот предварительный просмотр в конструкторе:

Here preview at designer

Вот предварительный просмотр в устройстве:

Here is preview in device

Когда я открывать и закрывать клавиатуру, это размер, как в конструкторе. Мне нужно знать, есть ли какая-либо ошибка в коде.

Edit: Zharf из Android-Dev IRC нашел это решение:

Viewpager is being pushed out of the screen [CoordinatorLayout] [Design Library]

+0

Если бы вы использовали ** PercentRelativeLayout **, вы могли бы избавиться от лишнего, ненужного LinearLayout. –

+0

Попробуйте добавить 'android: weightSum =" 100 "' к внешнему 'LinearLayout'. – Slav

+0

можете ли вы предоставить информацию с устройства в «дизайнерском» и «фактическом» устройстве? как, например, размеры устройств и какие устройства сами (nexus, samsung и т. д.). – hehe

ответ

-1

попробовать этот ... вы просто пропустили один линию weightsum в parrent линейной компоновки. добавить это.

android:weightSum="100" 

так что ваш окончательный код выглядит как

<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="100"> 

     <ListView android:id="@+id/chatsListView" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="90" 
     android:divider="@null" 
     android:dividerHeight="0dp" 
     android:listSelector="@android:color/transparent" 
     android:transcriptMode="alwaysScroll" 
     /> 

     <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="10" 
     android:padding="10dp"> 

     <EditText 
      android:id="@+id/messageEditText" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:inputType="textMultiLine" 
      android:hint="type message here" 
      android:ems="10"/> 

     <ImageButton 
      android:id="@+id/sendMessageButton" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:background="@drawable/send_button"/> 

    </LinearLayout> 

</LinearLayout> 
+1

Я помню, что раньше у меня установлен weightSum, я не думаю, что это проблема. В дизайнере макет правильный. – Programmer01

+0

предоставит скриншот об этом? просто укажите ссылку –

+0

Я уезжаю, Как только я вернусь домой, я предоставлю ее. Спасибо, что помогли мне. – Programmer01

0

Использование Android: layout_weight = "1" instade Андроида: layout_weight = "90" в ListView. Также android: layout_height = "wrap_content" instade android: layout_height = "0dp" и не использовать layout_weight в LinearLayout. Вы можете использовать layout_weight = "1" в EditText. Надеюсь, это исправит вашу проблему :)

+1

Где логика? Как я уже сказал, мне нужно знать, где проблема логически. – Programmer01

+0

вы используете layout_weight = "90" и layout_weight = "10" в ListView и LinearLayout, поэтому он делит на 90 частей высоты вашего устройства, чтобы отобразить список и 10 частей высоты вашего устройства для LinearLayout.Для этого он будет вести себя по-разному в разных устройствах. – Farya

+0

Я думаю, что вы ошибаетесь неправильно. Во всех устройствах это правило должно соблюдаться. – Programmer01

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