目前我正在开发Android TV应用.
我使用过Android Lean支持库.
我添加了一个ListView
,但我无法从listView中选择任何带有真实设备遥控器的项目.但是,我可以借助鼠标在我的Android虚拟设备上选择listView项.
这是我的listView示例代码:
customViewOrders = new CustomViewOrders(getActivity().getBaseContext(), arrayViewOrders);
lstViewOrder.setAdapter(customViewOrders);
Run Code Online (Sandbox Code Playgroud)
这arrayViewOrders
是我的ArrayList,它包含从JSON webservice收到的数据.
这是我的JSON响应:
{
"order":[
{
"0":"13829CF",
"gen_id":"13829CF",
"1":"17534CF",
"2":"Complete",
"ord_status":"Complete",
"3":"Online Preview",
"sta_name":"Online Preview",
"4":"2015-10-27 00:00:00",
"image":"cinereel",
"placed_from":"web"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我还在AndroidManifest.xml文件中添加了以下功能:
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<uses-feature
android:name="android.hardware.faketouch"
android:required="true" />
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是:如何在远程帮助下在真实设备中选择任何东西(即列表项,按钮)?
我试图用一个自定义视图控件创建一个自定义演示者,将视频播放到表面视图中,并在第一次绑定后收到此错误消息。有什么问题?我没有设置任何布尔值来冻结裁员或类似的信息。
整个项目可以在这里找到
java.lang.IllegalStateException: Do not setLayoutFrozen in layout or scroll
at android.support.v7.widget.RecyclerView.assertNotInLayoutOrScroll(RecyclerView.java:2164)
at android.support.v7.widget.RecyclerView.setLayoutFrozen(RecyclerView.java:1750)
at android.support.v17.leanback.app.BaseRowFragment.onTransitionStart(BaseRowFragment.java:199)
at android.support.v17.leanback.app.RowsFragment.onExpandTransitionStart(RowsFragment.java:483)
at android.support.v17.leanback.app.BrowseFragment.startHeadersTransitionInternal(BrowseFragment.java:435)
at android.support.v17.leanback.app.BrowseFragment.access$200(BrowseFragment.java:77)
at android.support.v17.leanback.app.BrowseFragment$3.onRequestChildFocus(BrowseFragment.java:546)
at android.support.v17.leanback.widget.BrowseFrameLayout.requestChildFocus(BrowseFrameLayout.java:124)
at android.view.ViewGroup.requestChildFocus(ViewGroup.java:740)
at android.view.ViewGroup.requestChildFocus(ViewGroup.java:740)
at android.view.ViewGroup.requestChildFocus(ViewGroup.java:740)
at android.support.v7.widget.RecyclerView.requestChildFocus(RecyclerView.java:2081)
at android.view.ViewGroup.requestChildFocus(ViewGroup.java:740)
at android.view.ViewGroup.requestChildFocus(ViewGroup.java:740)
at android.view.ViewGroup.requestChildFocus(ViewGroup.java:740)
at android.support.v7.widget.RecyclerView.requestChildFocus(RecyclerView.java:2081)
at android.view.ViewGroup.addViewInner(ViewGroup.java:4341)
at android.view.ViewGroup.addView(ViewGroup.java:4145)
at android.view.ViewGroup.addView(ViewGroup.java:4086)
at android.support.v7.widget.RecyclerView$5.addView(RecyclerView.java:591)
at android.support.v7.widget.ChildHelper.addView(ChildHelper.java:107)
at android.support.v7.widget.RecyclerView$LayoutManager.addViewInt(RecyclerView.java:6708)
at android.support.v7.widget.RecyclerView$LayoutManager.addView(RecyclerView.java:6666)
at android.support.v7.widget.RecyclerView$LayoutManager.addView(RecyclerView.java:6654)
at android.support.v17.leanback.widget.GridLayoutManager$2.cre ateItem(GridLayoutManager.java:1473)
at android.support.v17.leanback.widget.SingleRow.appendVisibleItems(SingleRow.java:111)
at android.support.v17.leanback.widget.Grid.appendOneColumnVisibleItems(Grid.java:364)
at android.support.v17.leanback.widget.GridLayoutManager.appendOneColumnVisibleItems(GridLayoutManager.java:1696)
at android.support.v17.leanback.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:1881)
at android.support.v7.widget.RecyclerView.disp atchLayoutStep2(RecyclerView.java:3026)
at android.support.v7.widget.RecyclerView.disp atchLayout(RecyclerView.java:2903)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3277)
at …
Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的Android TV应用程序实现效果,以便在关注时扩展视图.
我通过动画ViewHolder的主视图来做到这一点LayoutParams
.
它工作正常,但问题是当我滚动到视图的末尾(水平线性映射)时,视图扩展不与视图的末尾对齐,因此它会产生一个非常奇怪的效果.
我的代码:
holder.m_view.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
if (b)
{
ResizeAnimation anim = new ResizeAnimation(view, 600, view.getWidth());
anim.setDuration(200);
anim.setInterpolator(new AccelerateDecelerateInterpolator());
view.startAnimation(anim);
}
else
{
ResizeAnimation anim = new ResizeAnimation(view, 400, view.getWidth());
anim.setDuration(200);
anim.setInterpolator(new AccelerateDecelerateInterpolator());
view.startAnimation(anim);
}
}
});
Run Code Online (Sandbox Code Playgroud)
虽然ResizeAnimation
是我自己的班级改变了视图LayoutParams
.
如何解决奇怪的滚动问题?
谢谢.
android android-animation android-tv leanback android-recyclerview
我打开了旧的Android TV应用程序项目,并尝试更新依赖项。然后,我将appcompat库更新为27.1.1。我打开了leanback片段,Android Studio警告我BrowseFragment
已弃用,应BaseSupportFragment
改为使用。其他回扫片段的情况相同。然后,我将所有片段更改为AppCompat版本(除非LeanbackSettingsFragment
没有提供AppCompat版本),然后将我的Activity扩展更改为AppCompatActivity
。
进行这些更改之后,我构建了该应用程序,但是当我启动该应用程序时,我在logcat中看到此错误:
无法启动活动ComponentInfo {net.swiftzer.trainboard.dev/net.swiftzer.trainboard.main.MainActivity}:java.lang.IllegalStateException:此活动需要使用Theme.AppCompat主题(或后代)。
我用于该应用程序和活动的主题都在下Theme.Leanback
。但是我检查了主题是否基于平台本机主题。
我应该坚持使用不推荐的leanback片段类,还是leanback库提供AppCompat主题?leanback库就像一个半熟的库。我看到leanback库去年提供了片段的AppCompat版本,但是没有示例项目正在使用它们。现在,他们将从扩展的片段类标记android.app.Fragment
为已弃用,但它们没有提供正确的迁移方法。
我正在为我的电视应用程序使用RowsSupportFragment of lean-back库.它将片段的背景颜色更改为黑色,同时在FireTV中选择项目(几次颜色更改为黑色,因为我们将背景颜色设置为透明),而相同的代码在AndroidTV中正常工作
我建议如何解决这个问题.
我正在开发Android TV
一个应用程序,我有一个recycler view
. 如何将焦点集中在想要的位置上?(我已经尝试过scrollToPosition
和smoothScroller
,但它不起作用)。提前致谢!
我正在开发一个使用 Leanback lib 的 Android TV 项目。
我想要实现的目标是使 VerticalGridView ( androidx.leanback.widget.VerticalGridView
) 中内置的垂直滚动条可见。
<androidx.leanback.widget.VerticalGridView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/container_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:fadeScrollbars="false"
android:scrollbarThumbVertical="@color/color_green"
app:fastScrollVerticalThumbDrawable="@drawable/scrollbar_vertical_thumb"
android:scrollbarSize="5dp"
style="?attr/rowsVerticalGridStyle" />
Run Code Online (Sandbox Code Playgroud)
如图所示,我尝试设置滚动条大小、可绘制、缩略图样式以及所有其他可能的属性以使滚动条可见。
现在的悲剧是,当我调用verticalGridView.getVerticalScrollbarWidth();
方法来检查宽度时,它返回了0
。看来 Leanback lib 正在将 VerticalScrollbarWidth 设置为0
我找不到的某个地方。
我还尝试查看其他 Leanback 应用程序,尽管视图是可滚动的,但没有应用程序显示滚动条拇指。
为什么??有什么方法可以向我的用户展示 Android TV 应用程序上的滚动条吗?
我使用leanback库为Android TV开发.我的应用程序将min API声明为16,但leanback作为最小API为16.因此,文档说我在我的清单中声明了这一点:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.mypackage.package">
<uses-sdk tools:overrideLibrary="android.support.v17.leanback" />
Run Code Online (Sandbox Code Playgroud)
但是我仍然有错误:
错误:(6,5)任务':app:processAdhocProdManifest'的执行失败.
清单合并失败:使用-SDK:16的minSdkVersion不能比库/thepathtotheapp/build/intermediates/exploded-aar/com.android.support/leanback-v17/22.2.0/AndroidManifest.xml建议宣布版本17小:使用tools:overrideLibrary ="android.support.v17.leanback"强制使用
在Manifest合并报告中我可以看到:
MERGED from io.fabric.sdk.android:fabric:1.0.2:7:5
android:targetSdkVersion
INJECTED from AndroidManifest.xml:0:0
INJECTED from AndroidManifest.xml:0:0
android:minSdkVersion
INJECTED from AndroidManifest.xml:0:0
INJECTED from AndroidManifest.xml:0:0
tools:overrideLibrary
ADDED from AndroidManifest.xml:21:15
tools:ignore
ADDED from com.mixpanel.android:mixpanel-android:4.5.4-RC1:14:9
application
ADDED from AndroidManifest.xml:23:5
Run Code Online (Sandbox Code Playgroud)
所以看起来它正在添加工具:overrideLibrary但它仍然失败.
谁知道如何解决这个问题?
我需要获取 VerticalGridFragment 的选定/聚焦项目的索引。我在文档https://developer.android.com/reference/android/support/v17/leanback/app/VerticalGridFragment.html 中找到了设置所选项目的方法,即setSelectedPosition(int position)设置所选项目位置.
但是我在文档中找不到任何提供所选项目或其索引的方法。
有人可以帮我找到解决方法来获取 VerticalGridFragment 的选定项目吗?
我正在使用Android TV应用程序,当我开始处理项目代码时,它会引发PlaybackOverlayFragment错误,并指出它无法解析符号PlaybackOverlayFragment
public class PlaybackOverlayFragment extends android.support.v17.leanback.app.PlaybackOverlayFragment
Run Code Online (Sandbox Code Playgroud)
目前在我的gradle文件中显示为:
compile 'com.android.support:leanback-v17:27.1.1'
Run Code Online (Sandbox Code Playgroud)
最初的项目是编译sdk版本26,我将其升级到27,是因为它引发错误吗?