gpt4 book ai didi

android - Horizo​​ntalScrollView 中带有 RecyclerView 的二维列表

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:14:07 42 4
gpt4 key购买 nike

我正在尝试构建一个 View ,允许用户水平和垂直滚动类似 Excel 的结构。我最初的想法是将 RecyclerView(带有 LinearManager)放入 Horizo​​ntalScrollView。但这似乎不起作用。

这是我的代码:

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v7.widget.Toolbar
android:id="@+id/gameplay_Toolbar"
android:layout_width="match_parent"
android:layout_height="56dp"
android:background="@color/accent"
app:title="@string/gameplay_score_toolbar"
app:titleMarginStart="48dp"
app:titleTextAppearance="@style/toolbar_title" />

<HorizontalScrollView
android:id="@+id/gameplay_hotizontalScroll_ScrollView"
android:layout_below="@+id/gameplay_Toolbar"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_marginTop="5dp"
android:layout_marginLeft="5dp"
android:fillViewport="true"
>

<android.support.v7.widget.RecyclerView
android:id="@+id/gameplay_gameContents_RecyclerView"
android:layout_width="fill_parent"
android:layout_height="match_parent"/>

</HorizontalScrollView>

</RelativeLayout>

现在它只允许 Recycler 滚动,Horizo​​ntalScrollView 看起来像一个普通的 FrameLayout(因为 Recycler 内的 View 正在裁剪到边缘)。

我认为我放入 Recycler 的 View 具有固定大小可能是相关的。

关于如何让这个概念发挥作用的任何提示?

最佳答案

[已解决]

所有技巧都是手动设置 RecyclerView 宽度,因为它拒绝接受 WRAP_CONTENT 并且始终最大与屏幕宽度一样宽。技巧如下:

public class SmartRecyclerView extends RecyclerView {

public int computedWidth = <needs to be set from outside>

public SmartRecyclerView(Context context) {
super(context);
}

public SmartRecyclerView(Context context, AttributeSet attrs) {
super(context, attrs);
}

public SmartRecyclerView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}

@Override
public boolean canScrollHorizontally(int direction) {
return false;
}

@Override
public int getMinimumWidth() {
return computedWidth;
}

@Override
protected void onMeasure(int widthSpec, int heightSpec) {
super.onMeasure(widthSpec, heightSpec);
setMeasuredDimension(computedWidth, getMeasuredHeight());
}

@Override
protected int getSuggestedMinimumWidth() {
return computedWidth;
}
}

然后简单地:

HorizontalScrollView myScroll = ...
SmartRecyclerView recyclerView = new SmartRecyclerView(...)
...
recyclerView.computedWidth = myNeededWidth;
myScroll.addView(recyclerView);

而且很有效!快乐编码...

示例工作代码:https://dl.dropboxusercontent.com/u/79978438/RecyclerView_ScrollView.zip

关于android - Horizo​​ntalScrollView 中带有 RecyclerView 的二维列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28653173/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com