2016-03-16 7 views
0

Я хочу, чтобы это сделать:Понимания layout_weight

enter image description here

Проблемы: вся раскладка содержит по ScrollView в LinearLayout и на дне должна быть кнопками степпер. Для этого я использовал layout_weight для поиска элементов в пространстве, как я хочу.

Вот мой XML-код:

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

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:fillViewport="true" 
    android:background="@drawable/shape_fondo" 
    android:layout_weight="1"> 

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

     <LinearLayout 

      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:orientation="vertical"> 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical"> 
       <ImageView 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginBottom="12dp" 
        android:src="@mipmap/indicador_wizzard2"/> 
       <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center_horizontal" 
        android:text="Días de ingesta" 
        android:layout_marginBottom="6dp"/> 
      </LinearLayout> 

      <LinearLayout 
       android:orientation="horizontal" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="12dp" 
       android:layout_marginLeft="12dp" 
       android:weightSum="49"> 

       <ToggleButton 
        android:id="@+id/lunes" 
        android:layout_weight="7" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:background="@drawable/botonesdias" 
        android:textOn="Lu" 
        android:textOff="Lu"/> 
       <ToggleButton 
        android:id="@+id/martes" 
        android:layout_weight="7" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:background="@drawable/botonesdias" 
        android:textOn="Ma" 
        android:textOff="Ma"/> 
       <ToggleButton 
        android:id="@+id/miercoles" 
        android:layout_weight="7" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:background="@drawable/botonesdias" 
        android:textOn="Mie" 
        android:textOff="Mie"/> 
       <ToggleButton 
        android:id="@+id/jueves" 
        android:layout_weight="7" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:background="@drawable/botonesdias" 
        android:textOn="Jue" 
        android:textOff="Jue"/> 
       <ToggleButton 
        android:id="@+id/viernes" 
        android:layout_weight="7" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:background="@drawable/botonesdias" 
        android:textOn="Vie" 
        android:textOff="Vie"/> 
       <ToggleButton 
        android:id="@+id/sabado" 
        android:layout_weight="7" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:background="@drawable/botonesdias" 
        android:textOn="Sa" 
        android:textOff="Sa"/> 
       <ToggleButton 
        android:id="@+id/domingo" 
        android:layout_weight="7" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:background="@drawable/botonesdias" 
        android:textOn="Do" 
        android:textOff="Do"/> 


      </LinearLayout> 
     </LinearLayout> 
     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="2.3" 
      android:id="@+id/contenedortitulito"> 

      <TextView 
       android:id="@+id/titulohora" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="20dp" 
       android:layout_alignParentLeft="true" 
       android:text="Hora" /> 

      <TextView 
       android:id="@+id/titulodosis" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="20dp" 
       android:layout_alignParentRight="true" 
       android:text="Dosis"/> 



     </RelativeLayout> 
     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 

      <ListView 
       android:id="@+id/listview" 
       android:background="@color/azul" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_above="@+id/contenedortitulito"/> 

     </RelativeLayout> 

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

      <Button 
       style="@style/botones" 
       android:id="@+id/btn_cancelar2" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="0.5" 
       android:text="Atrás" 
       android:layout_gravity="center"/> 

      <Button 
       style="@style/botones" 
       android:id="@+id/btn_irapaso3" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="0.5" 
       android:text="Continuar" 
       android:layout_gravity="center" /> 



     </LinearLayout> 
    </LinearLayout> 
</ScrollView> 

Я не совсем понимаю концепцию веса макета. Вы можете мне объяснить?

Спасибо!

+0

Вложенные LinearLayouts приводят к плохой производительности в соответствии с Android документации –

+0

Так как я могу сделать лучше Performace? –

+1

layout_weight разделяет место просмотра процентов. если вы даете такое же значение, это 50/50. Если вы ставите, например, 0,75 для представления и 0,25 для другого вида, то вид 0.25 больше, потому что он заполняет 75% места и оставляет 25% для другого ... – Opiatefuchs

ответ

1

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

я предоставил пример экрана, в котором я использовал weightsum и layout_weight. Вы можете применить вес макета на Scrollview а

example screen

Вот код для экрана образца. Вы можете игнорировать первый относительный макет. Надеюсь, что это помогает

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@drawable/whole_bg"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_marginBottom="35dp" 
    android:orientation="vertical" 
    android:weightSum="1"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight=".15" 
     android:background="@drawable/top" 
     android:orientation="horizontal" 
     android:weightSum="6"> 

     <ImageView 
      android:id="@+id/ivHome" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:src="@drawable/ll_home" /> 

     <ImageView 
      android:id="@+id/ivTraderList" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:src="@drawable/ll_traderlist_green" /> 

     <ImageView 
      android:id="@+id/ivStatement" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:src="@drawable/ll_statement_green" /> 

     <ImageView 
      android:id="@+id/ivSummary" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:src="@drawable/ll_summary_green" /> 

     <ImageView 
      android:id="@+id/ivProduct" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:src="@drawable/ll_product_green" /> 

     <ImageView 
      android:id="@+id/ivLogout" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:src="@drawable/ll_logout" /> 
    </LinearLayout> 

    <TextView 
     style="@style/TitleStyle" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:padding="5dp" 
     android:text="@string/trader_list_str" /> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/lightGreen" 
     android:orientation="horizontal" 
     android:weightSum="1"> 

     <EditText 
      android:id="@+id/etDate" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight=".495" 
      android:editable="false" 
      android:focusable="false" 
      android:gravity="center" 
      android:text="@string/date_str" 
      android:textAppearance="?android:textAppearanceMedium" 
      android:textColor="@color/white" 
      android:textStyle="bold" /> 

     <View 
      android:layout_width="0dp" 
      android:layout_height="25dp" 
      android:layout_gravity="center" 
      android:layout_weight=".005" 
      android:background="@android:color/darker_gray" /> 

     <EditText 
      android:id="@+id/etTime" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight=".495" 
      android:editable="false" 
      android:focusable="false" 
      android:gravity="center" 
      android:text="@string/time_str" 
      android:textAppearance="?android:textAppearanceMedium" 
      android:textColor="@color/white" 
      android:textStyle="bold" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight=".84" 
     android:orientation="vertical" 
     android:weightSum="1"> 

     <ListView 
      android:id="@+id/list" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight=".8" /> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight=".2" 
      android:orientation="vertical" 
      android:weightSum="2"> 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="0dp" 
       android:layout_margin="10dp" 
       android:layout_weight="1" 
       android:background="@color/lightYellow" 
       android:orientation="horizontal" 
       android:weightSum="1"> 

       <TextView 
        android:id="@+id/tvLabelTotal" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center" 
        android:layout_weight=".595" 
        android:gravity="center" 
        android:text="@string/total_str" 
        android:textAppearance="?android:textAppearanceMedium" /> 

       <View 
        android:layout_width="0dp" 
        android:layout_height="20dp" 
        android:layout_gravity="center" 
        android:layout_weight=".01" 
        android:background="@android:color/darker_gray" /> 

       <TextView 
        android:id="@+id/tvTotal" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center" 
        android:layout_marginLeft="1dp" 
        android:layout_weight=".395" 
        android:gravity="center" /> 
      </LinearLayout> 

      <TextView 
       android:id="@+id/tvOrder" 
       style="@style/BtnStyle" 
       android:layout_width="wrap_content" 
       android:layout_height="0dp" 
       android:layout_gravity="center" 
       android:layout_marginBottom="5dp" 
       android:layout_weight="1" 
       android:onClick="placeOrder" 
       android:paddingLeft="30dp" 
       android:paddingRight="30dp" 
       android:text="@string/place_order_str" /> 
     </LinearLayout> 
    </LinearLayout> 
</LinearLayout> 

<LinearLayout 
    android:id="@+id/advtLabel" 
    android:layout_width="match_parent" 
    android:layout_height="35dp" 
    android:layout_alignParentBottom="true" 
    android:background="@color/lightYellow" 
    android:orientation="horizontal" />