线性布局未显示在回收站视图下方

Posted

技术标签:

【中文标题】线性布局未显示在回收站视图下方【英文标题】:linearlayout is not getting displayed below recyclerview 【发布时间】:2020-12-21 16:26:06 【问题描述】:

在我的布局中,我有产品列表的recyclerview ..下面我在线性布局中显示总价格...但滚动线性布局不显示

我的代码场景:

1--> 当我在 recyclerview 上有一项时 -->linearlayout 显示正常

2--> 当我在 recyclerview 上有更多项目时 --> 向下滚动时看不到线性布局(线性布局不显示)

在第二个场景中需要帮助...在此先感谢

下面是代码xml:--

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
xmlns:app="http://schemas.android.com/apk/res-auto">
<RelativeLayout
    android:layout_
    android:layout_
    android:id="@+id/relative">
    <androidx.appcompat.widget.Toolbar
        android:layout_
        android:layout_
        app:collapseIcon="@drawable/ic_arrow_back_black_24dp"

        android:id="@+id/toolbartable"
        android:background="@color/colorPrimaryDark">

    </androidx.appcompat.widget.Toolbar>

</RelativeLayout>

<ScrollView
    android:layout_
    android:layout_
    android:layout_below="@id/relative"
    android:id="@+id/nest"
    android:scrollbars="vertical">
  <androidx.recyclerview.widget.RecyclerView
    android:layout_
    android:layout_below="@id/relative"
    android:layout_
    android:id="@+id/recyleview"/>
</ScrollView>
<LinearLayout
    android:layout_
    android:layout_
    android:id="@+id/linearlayoutorder"
    android:layout_below="@id/nest"
    android:orientation="horizontal"
    android:weightSum="2"
    android:background="@drawable/border"
    android:backgroundTintMode="@color/colorPrimary">
    <TextView
        android:layout_
        android:layout_
        android:text="TOTAL"
        android:layout_gravity="center"
        android:layout_weight="1"></TextView>
    <TextView
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:id="@+id/totalidcost"
        android:layout_gravity="right|center"
        android:textAlignment="textEnd"
        tools:ignore="RtlCompat"></TextView>
</LinearLayout>
</RelativeLayout>

更新代码:--

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
xmlns:app="http://schemas.android.com/apk/res-auto">
<RelativeLayout
    android:layout_
    android:layout_
    android:id="@+id/relative">
    <androidx.appcompat.widget.Toolbar
        android:layout_
        android:layout_
        app:collapseIcon="@drawable/ic_arrow_back_black_24dp"

        android:id="@+id/toolbartable"
        android:background="@color/colorPrimaryDark">

    </androidx.appcompat.widget.Toolbar>

</RelativeLayout>
<androidx.core.widget.NestedScrollView
android:layout_
android:layout_
android:id="@+id/nest"
android:scrollbars="vertical"
android:layout_below="@id/relative">
  <androidx.recyclerview.widget.RecyclerView
    android:layout_
    android:layout_
      android:nestedScrollingEnabled="false"
      android:id="@+id/recyleview"/>
<LinearLayout
    android:layout_
    android:layout_
    android:id="@+id/linearlayoutorder"

    android:orientation="horizontal"
    android:weightSum="2"
    android:background="@drawable/border"
    android:backgroundTintMode="@color/colorPrimary">
    <TextView
        android:layout_
        android:layout_
        android:text="TOTAL"
        android:layout_gravity="center"
        android:layout_weight="1"></TextView>
    <TextView
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:id="@+id/totalidcost"
        android:layout_gravity="right|center"
        android:textAlignment="textEnd"
        tools:ignore="RtlCompat"></TextView>
</LinearLayout>
 </androidx.core.widget.NestedScrollView>
 </RelativeLayout>

获取错误--:Caused by: android.view.InflateException: Binary XML file line #34: ScrollView can host only one direct child

 `Caused by: java.lang.IllegalStateException: ScrollView can host only one direct child`

需要帮助

【问题讨论】:

【参考方案1】:

以下解决方案对我有用:-

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
xmlns:app="http://schemas.android.com/apk/res-auto">
<RelativeLayout
    android:layout_
    android:layout_
    android:id="@+id/relative">
    <androidx.appcompat.widget.Toolbar
        android:layout_
        android:layout_
        app:collapseIcon="@drawable/ic_arrow_back_black_24dp"

        android:id="@+id/toolbartable"
        android:background="@color/colorPrimaryDark">

    </androidx.appcompat.widget.Toolbar>

</RelativeLayout>

 <androidx.core.widget.NestedScrollView
android:layout_
android:layout_
android:id="@+id/nest"
android:scrollbars="vertical"
android:layout_below="@id/relative">
<RelativeLayout
    android:layout_
    android:layout_
    android:orientation="vertical">
  <androidx.recyclerview.widget.RecyclerView
    android:layout_
    android:layout_
      android:nestedScrollingEnabled="false"
      android:id="@+id/recyleview"/>
<LinearLayout
    android:layout_
    android:layout_
    android:id="@+id/linearlayoutorder"
     android:layout_below="@id/recyleview"
    android:orientation="horizontal"
    android:weightSum="2"
    android:background="@drawable/border"
    android:backgroundTintMode="@color/colorPrimary">
    <TextView
        android:layout_
        android:layout_
        android:text="TOTAL"
        android:layout_gravity="center"
        android:layout_weight="1"></TextView>
    <TextView
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:id="@+id/totalidcost"
        android:layout_gravity="right|center"
        android:textAlignment="textEnd"
        tools:ignore="RtlCompat"></TextView>
</LinearLayout>
</RelativeLayout>
</androidx.core.widget.NestedScrollView>
 </RelativeLayout>

【讨论】:

但是如果你删除项目,它仍然占用空间?【参考方案2】:

你还没有为LinearLayout添加weightSum和orientation值。

Source

【讨论】:

不,我做了更改..虽然没有工作...情况仍然相同 您不必在滚动视图中使用 Recyclerview。 删除滚动视图后好的..情况仍然相同...滚动recyclerview后不显示【参考方案3】:

您可以使用 NestedScrollView 代替 ScrollView。并将您的 RecyclerView 以及 LinearLayout 放在 NestedScrollView 中。并启用android:nestedScrollingEnabled=true。应该适合你。

<NestedScrollView 
    android:layout_
    android:layout_
    android:nestedScrollingEnabled=true>
      <LinearLayout 
        android:layout_
        android:layout_
        android:orientation="vertical">

<androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyleview"
        android:layout_
        android:layout_
        app:layout_constraintBottom_toTopOf="@id/linearlayoutorder"
        app:layout_constraintTop_toBottomOf="@id/relative" />

    <LinearLayout
        android:id="@+id/linearlayoutorder"
        android:layout_
        android:layout_
        android:background="#000000"
        android:backgroundTintMode="@color/colorPrimary"
        android:orientation="horizontal"
        android:weightSum="2"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent">

        <TextView
            android:layout_
            android:layout_
            android:layout_gravity="center"
            android:layout_weight="1"
            android:text="TOTAL" />

        <TextView
            android:id="@+id/totalidcost"
            android:layout_
            android:layout_
            android:layout_gravity="right|center"
            android:layout_weight="1"
            android:textAlignment="textEnd"
            tools:ignore="RtlCompat" />
    </LinearLayout>
</LinearLayout>

在你的 java 类中你有你的 recyclerview 设置recyclerView.setNestedScrollingEnabled(true or false);

【讨论】:

我在 recyclerview 中做了 nestedscrolling false 我得到了错误 ==> 原因:android.view.InflateException:二进制 XML 文件第 34 行:ScrollView 只能托管一个直接子 原因:java.lang。 IllegalStateException: ScrollView 只能承载一个直接子节点 只需在nestedScrollView 中创建一个linearLayout 或一个RelativeLayout 作为视图的父级。那你应该没事。我将使用层次结构更新我的答案。【参考方案4】:

像这样使用 ConstraintLayout,这是你需要的完整 xml 代码

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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_
    android:layout_>

    <RelativeLayout
        android:id="@+id/relative"
        android:layout_
        android:layout_
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbartable"
            android:layout_
            android:layout_
            android:background="@color/colorPrimaryDark"
            app:collapseIcon="@drawable/back" />

    </RelativeLayout>

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyleview"
        android:layout_
        android:layout_
        app:layout_constraintBottom_toTopOf="@id/linearlayoutorder"
        app:layout_constraintTop_toBottomOf="@id/relative" />

    <LinearLayout
        android:id="@+id/linearlayoutorder"
        android:layout_
        android:layout_
        android:background="#000000"
        android:backgroundTintMode="@color/colorPrimary"
        android:orientation="horizontal"
        android:weightSum="2"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent">

        <TextView
            android:layout_
            android:layout_
            android:layout_gravity="center"
            android:layout_weight="1"
            android:text="TOTAL" />

        <TextView
            android:id="@+id/totalidcost"
            android:layout_
            android:layout_
            android:layout_gravity="right|center"
            android:layout_weight="1"
            android:textAlignment="textEnd"
            tools:ignore="RtlCompat" />
    </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

【讨论】:

以上是关于线性布局未显示在回收站视图下方的主要内容,如果未能解决你的问题,请参考以下文章

将AdView添加到另一个下方的线性布局中不会显示任

ImageView 未在滚动视图内的线性布局中显示

在使线性布局容器无效后未调用子视图的 ondraw()

如何在约束布局中对齐线性布局

如何以线性布局显示最后一个文本视图

将视图添加到底部的垂直线性布局(以编程方式)