gpt4 book ai didi

android-recyclerview - 如何在 Android TV 上的 RecyclerView 中实现滚动?

转载 作者:行者123 更新时间:2023-12-04 18:30:06 29 4
gpt4 key购买 nike

我有一个需要适应 Android TV 的应用程序。此应用程序包含水平 RecyclerView,当我按下 Remote 上的 D-pad 按钮时,它不会滚动。
我找到了 this solution ,但它崩溃了。
这是代码:

<ru.myapp.package.HorizontalPersistentFocusWrapper
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="250dp"
android:background="@null"
android:scrollbars="none"/>
</ru.myapp.package.HorizontalPersistentFocusWrapper>

Horizo​​ntalPersistentFocusWrapper 与 PersistentFocusWrapper 相同但 mPersistFocusVertical = false;

崩溃发生在这个地方:
@Override
public void requestChildFocus(View child, View focused) {
super.requestChildFocus(child, focused);
View view = focused;
while (view != null && view.getParent() != child) {
view = (View) view.getParent(); <<<------ Crash here
}
mSelectedPosition = view == null ? -1 : ((ViewGroup) child).indexOfChild(view);
if (DEBUG) Log.v(TAG, "requestChildFocus focused " + focused + " mSelectedPosition " + mSelectedPosition);
}

崩溃堆栈跟踪:
java.lang.ClassCastException: android.view.ViewRootImpl cannot be cast to android.view.View
at ru.myapp.package.HorizontalPersistentFocusWrapper.requestChildFocus(HorizontalPersistentFocusWrapper.java:108)
at android.view.View.handleFocusGainInternal(View.java:5465)
at android.view.ViewGroup.handleFocusGainInternal(ViewGroup.java:714)
at android.view.View.requestFocusNoSearch(View.java:8470)
at android.view.View.requestFocus(View.java:8449)
at android.view.ViewGroup.requestFocus(ViewGroup.java:2747)
at android.view.View.requestFocus(View.java:8416)
at android.support.v4.widget.NestedScrollView.arrowScroll(NestedScrollView.java:1222)
at android.support.v4.widget.NestedScrollView.executeKeyEvent(NestedScrollView.java:551)
at android.support.v4.widget.NestedScrollView.dispatchKeyEvent(NestedScrollView.java:512)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)

最佳答案

使用最新版本的 RecyclerView。
或者至少使用com.android.support:recyclerview-v7:23.2.0有关更多信息,请参阅此链接:
https://code.google.com/p/android/issues/detail?id=190526&thanks=190526&ts=1445108573

现在是重要的部分:
新版本的 RecyclerView 开始遵守其子项的规则(如高度和宽度)。
您必须将子项 XML 中的根 View 设置为:android:focusable="true"
现在,滚动将按照预期进行。

关于android-recyclerview - 如何在 Android TV 上的 RecyclerView 中实现滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39856750/

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