2015-03-15 3 views
0

хотя я читал себя через несколько потоков, объясняя различия между dp, sp, px и т. Д., А также пытался получить хороший макет, Я все еще изо всех сил стараюсь сделать это правильно для разных телефонов.Исправлена ​​компоновка Android (dp, margin и т. Д.)

Я использую разные фрагменты, но если я получу помощь, чтобы сделать все правильно в одном фрагменте, я уверен, что смогу исправить остальные самостоятельно.

<RelativeLayout 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" 
    <!--all paddings=0--> 
    android:keepScreenOn="true" 
    tools:context=".MainActivity"> 

    ... 

    <fragment 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/fragmentBase" 
     class="...FragmentBase" /> 

    <!--other fragments--> 

</RelativeLayout> 

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

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    <!--all paddings=0-->> 
    <fragment 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/fragmentBase" 
     class="...FragmentBase" /> 
    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="400dp" 
     android:layout_marginTop="40dp" 
     android:requiresFadingEdge="vertical"> 

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

      <!--elements--> 

     </LinearLayout> 
    </ScrollView> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:gravity="bottom"> 
     <Button 
      android:layout_width="0dp" 
      android:layout_weight="0.8" 
      android:layout_height="40dp" 
      <!--other stuff-->/> 

     <Button 
      android:layout_width="0dp" 
      android:layout_weight="0.5" 
      android:layout_height="40dp" 
      <!--other stuff--> /> 

     <Button 
      android:layout_width="0dp" 
      android:layout_weight="0.7" 
      android:layout_height="40dp" 
      <!--other stuff-->/> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:gravity="bottom" 
     android:layout_marginBottom="40dp"> 

     <Button 
      android:layout_width="0dp" 
      android:layout_weight="0.6" 
      android:layout_height="40dp" 
      <!--other stuff--> /> 

     <Button 
      android:layout_width="0dp" 
      android:layout_weight="0.5" 
      android:layout_height="40dp" 
      <!--other stuff--> /> 

     <Button 
      android:layout_width="0dp" 
      android:layout_weight="0.6" 
      android:layout_height="40dp" 
      <!--other stuff--> /> 
    </LinearLayout> 

</RelativeLayout> 

оооочень. Проблема в основном заключается в том, что scrollview в некоторых случаях слишком длинный, в других случаях слишком короткий. Наличие фиксированного layout_height = "400dp" кажется ошибкой. Также, задавая высоту двух строк кнопок до 40dp и имея один 40dp над другим, оба начинаются со дна, похоже, не являются таким хорошим решением, но эти кнопки получили фоновые изображения, поэтому я не могу используйте wrap_content.

Каким будет макет? Я хочу, чтобы scrollView начинался прямо под моим «заголовком», поэтому андроид: layout_marginTop = «40dp» более или менее фиксирован, а две кнопки - в самом низу экрана. Я думаю, я хочу, чтобы scrollview была динамической длиной.

Plz помощь: S

ответ

0

Я постараюсь помочь вам, не переписав весь код выше.
Сначала я начну, предлагая несколько изменений:

  1. Вы можете установить высоту два LinearLayouts, которые содержат кнопки 40dp и установить Buttons игровой высоты к «match_parent»

  2. You может дать как LinearLayouts, которые содержат пуговицы идентификатор, скажем

    android:id="@+id/row1" 
    

    и

    android:id="@+id/row2" 
    

    Затем установите нижний (ID = row2) иметь

    android:layout_alignParentBottom="true" 
    

    и верхний слой (ID = Row1) иметь

    android:layout_above="@id/row2" 
    
  3. Как только это будет сделано, вы можете установить в Scrollview следующие параметры

    android:layout_alignParentTop="true" 
    android:layout_above="@id/row1" 
    

I Я понял проблему, это должно помочь. Надеюсь, что я написал, был полезен

+0

Это кажется очень полезным! Для чего нужно установить высоту ScrollView сейчас? match_parent? – user3646267

+0

Да, таким образом он заполнит все пространство между вершиной (минус 40dp поля) и LinearLayout (id = row1) –

+0

Хорошо, отлично, что отвечает на эту тему. – user3646267

0

попытаться добавить этот код в ваш Scrollview

android:layout_toStartOf="@+id/linearlayout1" 

и это

android:id="@+id/linearlayout1" 

к вашему 40 маржинального расположению

это может помочь

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