0

Par exemple, je veux un TextView de 500dp et de 150dp dans un LinearLayout. Pour la mise en page sensibles, en leur milieu, il y aurait une zone rouge s'il y a une hauteur restante (par exemple: grand dispositif d'écran):Comment laisser une vue au milieu de remplissage rester hauteur (le cas échéant) à l'intérieur de ScrollView?

Grand écran:

enter image description here

et s'il n'y a restent l'espace (par exemple: au petit appareil de l'écran), il n'y aurait pas de zone rouge et la vue se scrollable:

petit écran:

enter image description here

J'ai essayé:

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" 
tools:openDrawer="start"> 

<include 
    layout="@layout/app_bar_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

<android.support.design.widget.NavigationView 
    android:id="@+id/nav_view" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:fitsSystemWindows="true"> 
    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 
      <TextView 
       android:background="#FFFFAA" 
       android:layout_width="match_parent" 
       android:layout_height="500dp" 
       android:text="500dp" 
       android:gravity="center_vertical" 
       android:textAlignment="center" /> 
      <View 
       android:background="#FF0000" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1"/> 
      <TextView 
       android:background="#AAFF" 
       android:layout_width="match_parent" 
       android:layout_height="150dp" 
       android:text="150dp" 
       android:gravity="center_vertical" 
       android:textAlignment="center" /> 
     </LinearLayout> 
    </ScrollView> 
    </android.support.design.widget.NavigationView> 

</android.support.v4.widget.DrawerLayout> 

qui a fixé layout_weight = "1" pour la zone rouge, mais la zone rouge ne remplit pas la hauteur restante à grand écran:

grand écran:

enter image description here

Comment puis-je faire cela?

Répondre

0

rendre votre scrollview comme ça

utilisez android:fillViewport="true" car il Définit si le scrollview doit étirer son contenu pour remplir la fenêtre.

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fillViewport="true"> 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
     <TextView 
      android:background="#FFFFAA" 
      android:layout_width="match_parent" 
      android:layout_height="500dp" 
      android:text="500dp" 
      android:gravity="center_vertical" 
      android:textAlignment="center" /> 
     <View 
      android:background="#FF0000" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1"/> 
     <TextView 
      android:background="#AAFF" 
      android:layout_width="match_parent" 
      android:layout_height="150dp" 
      android:text="150dp" 
      android:gravity="center_vertical" 
      android:textAlignment="center" /> 
    </LinearLayout> 
</ScrollView> 
0

Vous devez définir android:fillViewport="true" sur ScrollView. Cela va étirer le contenu à la hauteur de la vue défilement si nécessaire.

0

Vous devez utiliser le pied de page fixe

Quelque chose comme ceci: -

<android.support.design.widget.NavigationView 
android:id="@+id/drawer" 
android:layout_width="wrap_content" 
android:layout_height="match_parent" 
android:layout_gravity="start" 
app:headerLayout="@layout/drawer_header" 
app:menu="@menu/drawer"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom" 
    android:clickable="true" 
    android:orientation="vertical"> 
    <TextView 
     android:id="@+id/footer_item_1" 
     android:layout_width="match_parent" 
     android:layout_height="48dp" 
     android:gravity="center" 
     android:text="Footer Item 1" /> 
    <TextView 
     android:id="@+id/footer_item_2" 
     android:layout_width="match_parent" 
     android:layout_height="48dp" 
     android:gravity="center" 
     android:text="Footer Item 2" /> 
</LinearLayout> 

Et res/menu/drawer.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
<group> 
    <item 
     android:id="@+id/nav_item_1" 
     android:icon="@drawable/ic_nav_item_1" 
     android:title="Nav Item 1" /> 
    <item 
     android:id="@+id/nav_item_2" 
     android:icon="@drawable/ic_nav_item_2" 
     android:title="Nav Item 2" /> 
    <item 
     android:id="@+id/nav_item_3" 
     android:icon="@drawable/ic_nav_item_3" 
     android:title="Nav Item 3" /> 
    <item 
     android:id="@+id/nav_item_4" 
     android:icon="@drawable/ic_nav_item_4" 
     android:title="Nav Item 4" /> 
    <item 
     android:id="@+id/footer_spacer_1" 
     android:checkable="false" 
     android:enabled="false" 
     android:orderInCategory="200" 
     android:title="" /> 
    <item 
     android:id="@+id/footer_spacer_2" 
     android:checkable="false" 
     android:enabled="false" 
     android:orderInCategory="200" 
     android:title="" /> 
</group> 
</menu>