2017-07-14 53 views
0

當使用嵌套佈局時,特別是嵌套滾動視圖時,我遇到了呈現用戶界面的問題。最外面的容器是ScrollView然後是第二佈局,ConstraintLayout,最後是Horizo​​ntalScrollView使用嵌套佈局時的Android UI問題

但是,通過使用上面的嵌套視圖組,一些(或大多數)視圖不顯示在某些手機(所有Android 5.0+)中。

現在,它們都是我的應用程序所必需的。代碼如下:

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView 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="wrap_content"> 

    <android.support.constraint.ConstraintLayout xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     tools:context="com.natramizh.trademanagement.ReportPurchaseRegisterActivity"> 

     <ProgressBar 
      android:id="@+id/progressBar" 
      style="?android:attr/progressBarStyle" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_marginEnd="8dp" 
      android:layout_marginStart="8dp" 
      android:elevation="3dp" 
      android:visibility="gone" 
      app:layout_constraintEnd_toEndOf="parent" 
      app:layout_constraintStart_toStartOf="parent" 
      app:layout_constraintTop_toBottomOf="@id/guidelineH47P" /> 

     <fragment 
      android:id="@+id/fragment_agent_detail_header" 
      android:name="com.natramizh.trademanagement.AgentDetailHeaderFragment" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      app:layout_constraintLeft_toLeftOf="parent" 
      app:layout_constraintRight_toRightOf="parent" 
      tools:layout="@layout/fragment_agent_detail_header" /> 

     <TextView 
      android:id="@+id/tvReportDate" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_marginEnd="8dp" 
      android:layout_marginStart="8dp" 
      android:layout_marginTop="16dp" 
      android:text="@string/lblReportDate" 
      app:layout_constraintEnd_toStartOf="@+id/guideline40P" 
      app:layout_constraintStart_toStartOf="parent" 
      app:layout_constraintTop_toBottomOf="@+id/fragment_agent_detail_header" /> 

     <EditText 
      android:id="@+id/txtDate" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_marginEnd="8dp" 
      android:layout_marginStart="8dp" 
      android:layout_marginTop="16dp" 
      android:ems="10" 
      android:inputType="date" 
      app:layout_constraintBottom_toBottomOf="@+id/tvReportDate" 
      app:layout_constraintEnd_toEndOf="parent" 
      app:layout_constraintStart_toStartOf="@+id/guideline40P" 
      app:layout_constraintTop_toTopOf="@+id/tvReportDate" 
      tools:layout_editor_absoluteY="27dp" /> 

     <Button 
      android:id="@+id/btnSubmit" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginEnd="8dp" 
      android:layout_marginStart="8dp" 
      android:layout_marginTop="16dp" 
      android:text="@string/btnSubmit" 
      app:layout_constraintEnd_toEndOf="parent" 
      app:layout_constraintStart_toStartOf="parent" 
      app:layout_constraintTop_toBottomOf="@+id/txtDate" /> 

     <HorizontalScrollView 
      android:id="@+id/productConsolidateHScrollView" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="8dp" 
      android:fillViewport="true" 
      app:layout_constraintLeft_toLeftOf="parent" 
      app:layout_constraintRight_toRightOf="parent" 
      app:layout_constraintTop_toBottomOf="@id/btnSubmit"> 

      <android.support.v7.widget.GridLayout 
       android:id="@+id/gridPurchaseRegister" 
       android:layout_width="0dp" 
       android:layout_height="match_parent" 
       android:layout_marginLeft="0dp" 
       android:layout_marginRight="0dp" 
       android:layout_marginTop="8dp" 
       app:layout_constraintLeft_toLeftOf="parent" 
       app:layout_constraintRight_toRightOf="parent" 
       app:layout_constraintTop_toBottomOf="@+id/btnSubmit"> 

      </android.support.v7.widget.GridLayout> 
     </HorizontalScrollView> 


     <android.support.constraint.Guideline 
      android:id="@+id/guideline40P" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      app:layout_constraintGuide_percent="0.40" /> 

     <android.support.constraint.Guideline 
      android:id="@+id/guidelineH47P" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" 
      app:layout_constraintGuide_percent="0.47" /> 

    </android.support.constraint.ConstraintLayout> 
</ScrollView> 

輸出我得到這個樣子的:

report purchase register screen issue - image

正如你可以從上面的鏈接的圖像看,該按鈕是完全看不見。即使在真實設備上運行,以下所有視圖也是不可見的。

現在,我需要的是解決我的問題。指出我做了什麼或做了什麼錯誤只需要一些調整。這是獲得完全可滾動屏幕的正確方法。

注意:gridlayout將被動態添加。

回答

0

讓你的滾動視圖像這樣設置滾動視圖的android:fillViewport財產

<ScrollView 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" 
    android:fillViewport="true"> 

    // add here your all controls 

</ScrollView > 
+0

您好,感謝您的答覆。但即使改變你提到的內容,問題仍然存在! – Leo

+0

@Leo讓你的android.support.constraint.ConstraintLayout android:layout_width =「match_parent」 android:layout_height =「match_parent」 –

+0

你的回答是對的。早些時候,我使用fillViewPort = true和layout_height = wrap_content作爲ScrollView元素,但是現在我將其更改爲fillViewPort = true和layout_height = match_parent,它可以工作! – Leo

0

我感動一點點代碼即可獲得預覽渲染它。首先,請注意滾動視圖總是使用較少的空間,所以如果指定wrap_content,它將不起作用。另外,在滾動視圖中使用滾動視圖並不是一個好主意。

<?xml version="1.0" encoding="utf-8"?> 
 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
 
    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"> 
 

 
    <android.support.constraint.ConstraintLayout 
 
     android:layout_width="match_parent" 
 
     android:layout_height="match_parent"> 
 

 
     <ProgressBar 
 
      android:id="@+id/progressBar" 
 
      style="?android:attr/progressBarStyle" 
 
      android:layout_width="0dp" 
 
      android:layout_height="wrap_content" 
 
      android:elevation="3dp" 
 
      android:visibility="visible" 
 
      app:layout_constraintEnd_toEndOf="parent" 
 
      app:layout_constraintLeft_toLeftOf="parent" 
 
      app:layout_constraintRight_toRightOf="parent" 
 
      app:layout_constraintStart_toStartOf="parent" /> 
 

 
     <TextView 
 
      android:id="@+id/tvReportDate" 
 
      android:layout_width="0dp" 
 
      android:layout_height="wrap_content" 
 
      android:layout_marginTop="15dp" 
 
      app:layout_constraintEnd_toStartOf="@+id/guideline40P" 
 
      app:layout_constraintStart_toStartOf="parent" 
 
      app:layout_constraintTop_toBottomOf="@+id/progressBar" 
 
      tools:layout_editor_absoluteX="0dp" /> 
 

 
     <EditText 
 
      android:id="@+id/txtDate" 
 
      android:layout_width="0dp" 
 
      android:layout_height="wrap_content" 
 
      android:layout_marginTop="16dp" 
 
      android:ems="10" 
 
      android:inputType="date" 
 
      app:layout_constraintBottom_toBottomOf="@+id/tvReportDate" 
 
      app:layout_constraintEnd_toEndOf="parent" 
 
      app:layout_constraintStart_toStartOf="@+id/guideline40P" 
 
      app:layout_constraintTop_toTopOf="@+id/tvReportDate" 
 
      tools:layout_editor_absoluteX="154dp" /> 
 

 
     <Button 
 
      android:id="@+id/btnSubmit" 
 
      android:layout_width="wrap_content" 
 
      android:layout_height="wrap_content" 
 
      android:layout_marginTop="16dp" 
 
      app:layout_constraintEnd_toEndOf="parent" 
 
      app:layout_constraintStart_toStartOf="parent" 
 
      app:layout_constraintTop_toBottomOf="@+id/txtDate" 
 
      tools:layout_editor_absoluteX="148dp" /> 
 

 
     <HorizontalScrollView 
 
      android:id="@+id/productConsolidateHScrollView" 
 
      android:layout_width="0dp" 
 
      android:layout_height="377dp" 
 
      android:layout_marginTop="8dp" 
 
      android:fillViewport="true" 
 
      app:layout_constraintLeft_toLeftOf="parent" 
 
      app:layout_constraintRight_toRightOf="parent" 
 
      app:layout_constraintTop_toBottomOf="@+id/btnSubmit"> 
 

 
      <FrameLayout 
 
       android:id="@+id/gridPurchaseRegister" 
 
       android:layout_width="0dp" 
 
       android:layout_height="match_parent" 
 
       android:layout_marginLeft="0dp" 
 
       android:layout_marginRight="0dp" 
 
       android:layout_marginTop="8dp" 
 
       app:layout_constraintLeft_toLeftOf="parent" 
 
       app:layout_constraintRight_toRightOf="parent" 
 
       app:layout_constraintTop_toBottomOf="@+id/btnSubmit"> 
 

 
      </FrameLayout> 
 
     </HorizontalScrollView> 
 

 

 
     <android.support.constraint.Guideline 
 
      android:id="@+id/guideline40P" 
 
      android:layout_width="wrap_content" 
 
      android:layout_height="wrap_content" 
 
      android:orientation="vertical" 
 
      app:layout_constraintGuide_percent="0.4" 
 
      tools:layout_editor_absoluteX="154dp" 
 
      tools:layout_editor_absoluteY="0dp" /> 
 

 
     <android.support.constraint.Guideline 
 
      android:id="@+id/guidelineH47P" 
 
      android:layout_width="wrap_content" 
 
      android:layout_height="wrap_content" 
 
      android:orientation="horizontal" 
 
      app:layout_constraintGuide_percent="0.47" 
 
      tools:layout_editor_absoluteX="0dp" 
 
      tools:layout_editor_absoluteY="240dp" /> 
 

 
    </android.support.constraint.ConstraintLayout> 
 
</ScrollView>