2017-10-19 51 views
-2

J'essaie de créer une interface utilisateur avec quelques champs au milieu de l'écran et un bouton en bas. Quand j'écris un nombre dans les champs, le clavier cache une partie de l'interface (ce que je veux), mais j'ai aussi besoin que toute l'interface soit scrollable pour que je puisse ajuster l'écran et continuer à remplir les champs avec le clavier sur. J'ai mis la configuration entière dans une disposition relative et l'ai mise sous une vue de défilement. Les messages ici disent que cela devrait fonctionner comme ça mais ça ne marche pas pour moi.Une disposition relative à l'intérieur d'une scrollview n'est pas défilable

Le code XML est

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 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:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.example.maaz.rakattracker.MainActivity"> 

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fillViewport="true"> 

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


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

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

       <EditText 
        android:id="@+id/farzET" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:ems="10" 
        android:gravity="center" 
        android:hint="0" 
        android:inputType="number" 
        android:singleLine="true" 
        android:textAlignment="center" /> 

       <TextView 
        android:id="@+id/farzLbl" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:elevation="0dp" 
        android:ems="5" 
        android:text="farz" 
        android:textAlignment="center" 
        android:textSize="15sp" /> 

      </LinearLayout> 

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

       <EditText 
        android:id="@+id/sunnatET" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:ems="10" 
        android:hint="0" 
        android:inputType="number" 
        android:singleLine="true" 
        android:textAlignment="center" /> 

       <TextView 
        android:id="@+id/sunnatLbl" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:ems="5" 
        android:text="Sunnat" 
        android:textAlignment="center" 
        android:textSize="15sp" /> 
      </LinearLayout> 

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

       <EditText 
        android:id="@+id/naflET" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:ems="10" 
        android:gravity="center" 
        android:hint="0" 
        android:inputType="number" 
        android:singleLine="true" 
        android:textAlignment="center" /> 

       <TextView 
        android:id="@+id/naflLbl" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:ems="5" 
        android:text="Nafl" 
        android:textAlignment="center" 
        android:textSize="15sp" /> 

      </LinearLayout> 

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

       <EditText 
        android:id="@+id/witrET" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:ems="10" 
        android:hint="0" 
        android:inputType="number" 
        android:singleLine="true" 
        android:textAlignment="center" /> 

       <TextView 
        android:id="@+id/witrLbl" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:ems="5" 
        android:text="Witr" 
        android:textAlignment="center" 
        android:textSize="15sp" /> 
      </LinearLayout> 
     </LinearLayout> 

     <Button 
      android:id="@+id/startButton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_centerHorizontal="true" 
      android:text="Button" /> 
    </RelativeLayout> 
</ScrollView> 

Veuillez me aider à comprendre la question ici. Merci

+0

Quelle est votre targetSdkVersion? – Thracian

Répondre

0

Essayez d'ajouter ce code dans votre activité à l'intérieur de la méthode onCreate():

getWindow() setSoftInputMode (LayoutParams.SOFT_INPUT_ADJUST_PAN);.

+0

c'est là. Dois-je supprimer la vue défilement si ce mode est activé? –

0

Dans votre manifeste, ajoutez android:windowSoftInputMode="adjustResize" à votre activité.

0

Sur votre fichier manifeste ajouter

<activity 
     android:name=".YOURACTIVITY" 
     android:windowSoftInputMode="adjustPan" /> 
    <activity 
+0

c'est là. Dois-je supprimer la vue déroulante et la garder simple avec elle? –

0

parce que défilante travail uniquement avec LinearLayout

+0

j'ai lu plusieurs messages où cette composition a fonctionné –

+0

non Malheureusement, vous ne pouvez pas le faire. essayez de mettre votre disposition relative à l'intérieur de la disposition linéaire et il travaillera –

+0

s'il vous plaît voir défiler android api: [link] (https://developer.android.com/reference/android/widget/ScrollView.html) et pour certains techniques voir: [lien] (https://material.io/guidelines/patterns/scrolling-techniques.html#scrolling-techniques-behavior) –