Android 禁用片段的某些部分进行滚动,即使它';它位于嵌套的滚动视图中

Android 禁用片段的某些部分进行滚动,即使它';它位于嵌套的滚动视图中,android,xml,kotlin,layout,android-nestedscrollview,Android,Xml,Kotlin,Layout,Android Nestedscrollview,目前,我正在完成我的项目的最后一个细节,我正试图在嵌套的scrollview中保留某个部分,以保持在屏幕顶部,并且只允许recyclerview滚动 这是我现在掌握的代码: 这是我的科特林 class MarktplaatsOverview : ApplicationFragment(){ var products: Array<MarketModel> = arrayOf() override fun onCreateView(inflater: Layou

目前,我正在完成我的项目的最后一个细节,我正试图在嵌套的scrollview中保留某个部分,以保持在屏幕顶部,并且只允许recyclerview滚动

这是我现在掌握的代码:


这是我的科特林


class MarktplaatsOverview : ApplicationFragment(){
    var products: Array<MarketModel> = arrayOf()

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        super.onCreateView(inflater, container, savedInstanceState)
        return inflater.inflate(R.layout.fragment_marktplaats, container, false)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        marktplaats_refresh.setOnRefreshListener {
            refreshData()
            marktplaats_refresh.isRefreshing = false
        }

        button11.setOnClickListener {
            navController.navigate(R.id.action_marktplaatsOverview_to_more)
        }
        button5.requestFocus()

        refreshData()

        verkoopEenProduct.setOnClickListener {
            navController.navigate(R.id.action_marktplaatsOverview_to_marktplaatsDetail)
        }
    }

    private fun refreshData() {
        if (DataStorage.market.isNotEmpty()) {
            setupRecyclerView()
        } else {
            SharedInstance.api.getAllMarketItems {
                if (isAdded) {
                    setupRecyclerView()
                }
            }
        }
    }

    private fun setupRecyclerView(){
        SharedInstance.api.getAllMarketItems {
            products = DataStorage.market
            val xLayoutManager = LinearLayoutManager(context, LinearLayoutManager.VERTICAL, true)
            xLayoutManager.stackFromEnd = true
            marktplaats_recyclerview.layoutManager = xLayoutManager
            marktplaats_recyclerview.adapter = MarktplaatsAdapter(products)
        }
    }
}

类MarktplaatsOverview:ApplicationFragment(){
变量乘积:Array=arrayOf()
覆盖创建视图(充气机:布局充气机,容器:ViewGroup?,savedInstanceState:Bundle?):视图{
super.onCreateView(充气机、容器、savedInstanceState)
返回充气机。充气(R.layout.fragment_marktplaats,容器,假)
}
覆盖已创建的视图(视图:视图,保存状态:捆绑?){
super.onViewCreated(视图,savedInstanceState)
marktplaats_refresh.setOnRefreshListener{
刷新数据()
marktplaats_refresh.isRefreshing=false
}
button11.setOnClickListener{
导航控制器。导航(R.id.action\u marktplaatsOverview\u至\u more)
}
按钮5.requestFocus()
刷新数据()
VerkooPeanProduct.setOnClickListener{
导航控制器。导航(R.id.action_marktplaatsOverview_to_marktplaatsDetail)
}
}
私有数据(){
if(DataStorage.market.isNotEmpty()){
setupRecyclerView()
}否则{
SharedInstance.api.getAllMarketItems{
如果(已添加){
setupRecyclerView()
}
}
}
}
私人娱乐设置回收视图(){
SharedInstance.api.getAllMarketItems{
产品=数据存储.market
val xLayoutManager=LinearLayoutManager(上下文,LinearLayoutManager.VERTICAL,true)
xLayoutManager.stackFromEnd=true
marktplaats_recyclerview.layoutManager=xLayoutManager
marktplaats_recyclerview.adapter=MarktplaatsAdapter(产品)
}
}
}
有人能解决这个棘手的问题吗?我一直在尝试对SwiperFreshLayout、ScrollView和约束进行一些重构,但到目前为止没有成功。
我在互联网上也找不到任何人想要和我一样的东西…

根据您的问题描述,我假设您面临一个问题,即当您打开屏幕时,回收器视图会自动滚动或聚焦,并且您需要将布局粘贴在顶部,因此将此字段传递给您的父布局

android:descendantFocusability="blocksDescendants"
或者替换您的布局

<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
    android:id="@+id/marktplaats_refresh"
    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:descendantFocusability="blocksDescendants"
    android:layout_height="match_parent">


我希望它能帮助您。

我已经尝试了您的解决方案,但不幸的是,这并没有改变我的应用程序的任何内容。我有一个图像视图,上面是225 dp,图像视图上面有一些东西。所有这些都需要保持在原位,即使我需要启用滑动刷新功能,但我只希望recyclerview滚动并折叠到顶部的imageview中,当然,当滚动到相反方向时,反之亦然。