我正在为Google TV开发一个应用程序,其中所有导航都将使用D-Pad /键盘完成。
我的活动有一个ActionBar,下面有一些水平列表。说清单 A,B& ç即可。列出 B& C 根据所选列表 A ...加载数据,以便他们可能/不会加载数据。
问题是,当ActionBar有焦点并按下DOWN D-Pad键时,焦点会丢失并且不会转移到List C (或 B 如果 C 没有数据).. y?
为了达到这个目的,我尝试以编程方式设置ActionBar的下一个可聚焦视图,如下面的
getActionBar().getCustomView().setNextFocusDownId(R.Id.list_C_id);
但没有奏效。
我还尝试使用层次结构查看器检查布局层次结构......但是,坦率地说,我不明白如何处理它的发现。
如何以编程方式设置Android ActionBar的下一个可聚焦控件?
非常感谢任何帮助。
Activity的XML如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mainContainer" style="@style/main" >
<!-- Splash Screen -->
<LinearLayout
android:id="@+id/splash_screen"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/welcome"
android:orientation="vertical" >
</LinearLayout>
<!-- main content holder.. it is shown afetr some time of showing above splash screen -->
<LinearLayout
android:id="@+id/main_content_screen"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:focusable="true"
android:visibility="invisible">
<!-- All Packages List -->
<LinearLayout
android:layout_width="205dp"
android:layout_height="match_parent"
android:background="@drawable/content_round_bg"
android:focusable="true"
android:orientation="vertical" >
<!-- Header of Packages-->
<RelativeLayout
style="@style/marginLeft5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/content_round_bg" >
<ImageView
android:id="@+id/packagesIcon"
style="@style/titleIcon"
android:src="@drawable/packages" >
</ImageView>
<TextView
style="@style/title"
android:layout_toRightOf="@+id/packagesIcon"
android:text="Packages" >
</TextView>
<ProgressBar
android:id="@+id/progressBarPackages"
style="@style/progressBar" />
</RelativeLayout>
<!-- <View style="@style/horizontalSeperator" /> -->
<ListView
android:id="@+id/allPackagesList"
style="@style/list"
android:nextFocusRight="@+id/gridChannels">
</ListView>
<!-- Message which is hidden by default and is made visible if list has no data -->
<LinearLayout
android:id="@+id/packageNotFound"
style="@style/emptyListIdentifier" >
<ImageView
style="@style/titleIcon"
android:src="@drawable/info" >
</ImageView>
<TextView
style="@style/emptyListIdentifierText"
android:layout_marginLeft="5dp"
android:text="Packages not available" >
</TextView>
</LinearLayout>
</LinearLayout>
<View style="@style/verticalSeperator" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:focusable="true"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/relativeLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:layout_below="@+id/titleContainer" >
<LinearLayout
android:id="@+id/channelsContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="0.35"
android:background="@drawable/content_round_bg"
android:focusable="true"
android:orientation="vertical" >
<!-- Header of Channels-->
<RelativeLayout
style="@style/marginLeft5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/content_round_bg" >
<ImageView
android:id="@+id/channelsIcon"
style="@style/titleIcon"
android:src="@drawable/channels" >
</ImageView>
<TextView
style="@style/title"
android:layout_toRightOf="@+id/channelsIcon"
android:text="Channels" >
</TextView>
<ProgressBar
android:id="@+id/progressBarChannels"
style="@style/progressBar" />
</RelativeLayout>
<RelativeLayout style="@style/listsContiner" android:focusable="true" >
<GridView
android:id="@+id/gridChannels"
style="@style/grid"
android:divider="#10F1F1F1"
android:nextFocusLeft="@+id/allPackagesList"
android:nextFocusRight="@+id/gridAllVODs"
android:numColumns="2" />
</RelativeLayout>
<!-- Message which is hidden by default and is made visible if list has no data -->
<RelativeLayout
android:id="@+id/channelsNotFound"
style="@style/emptyListIdentifier" >
<ImageView
android:id="@+id/NoChannelsIcon"
style="@style/titleIcon"
android:src="@drawable/info" >
</ImageView>
<TextView
style="@style/emptyListIdentifierText"
android:layout_toRightOf="@+id/NoChannelsIcon"
android:text="Channels are currently not available" >
</TextView>
</RelativeLayout>
</LinearLayout>
<View style="@style/verticalSeperator" />
<LinearLayout
android:id="@+id/vodsContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="0.65"
android:background="@drawable/content_round_bg"
android:orientation="vertical" >
<!-- Header of VODs-->
<RelativeLayout
style="@style/marginLeft5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/content_round_bg" >
<ImageView
android:id="@+id/VODsIcon"
style="@style/titleIcon"
android:src="@drawable/vod" >
</ImageView>
<TextView
style="@style/title"
android:layout_toRightOf="@+id/VODsIcon"
android:text="VOD" >
</TextView>
<ProgressBar
android:id="@+id/progressBarVODs"
style="@style/progressBar" />
</RelativeLayout>
<RelativeLayout style="@style/listsContiner" >
<GridView
android:id="@+id/gridAllVODs"
style="@style/grid"
android:divider="#10F1F1F1"
android:nextFocusLeft="@+id/gridChannels"
android:nextFocusRight="@+id/allPackagesList"
android:numColumns="1" />
</RelativeLayout>
<!-- Message which is hidden by default and is made visible if list has no data -->
<RelativeLayout
android:id="@+id/videosNotFound"
style="@style/emptyListIdentifier" >
<ImageView
android:id="@+id/NoVODsIcon"
style="@style/titleIcon"
android:src="@drawable/info" >
</ImageView>
<TextView
style="@style/emptyListIdentifierText"
android:layout_centerInParent="true"
android:layout_toRightOf="@+id/NoVODsIcon"
android:text="Videos are currently not available" >
</TextView>
</RelativeLayout>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
</LinearLayout>
每个List / Grid的所有容器直到Top LinearLayout都直接或以其样式设置了android:focusable =“true”。
编辑:可以从 here
下载完整描述我的spp屏幕的示例应用请在第一个列表中加入 。您可以通过main.xml文件中的id allPackagesList 进行搜索。我忘了插入它。遗憾
此应用中的问题包括:
答案 0 :(得分:0)
List是否包含在另一个容器中?尝试为您的列表及其容器添加android:focusable =“true”..