我英语不好,所以我使用谷歌翻译来提问。
我的Android项目是用Java实现的,是使用
tabhost
和TabActivity
实现的。
我知道在实现选项卡时此方法已被弃用,但我没有足够的时间来更改它,所以我必须按原样使用它们。
在这种情况下,我需要在这个项目中添加“Android talkback”。
我的代码类似于以下内容。
// TabActivity.java
public class TabActivity extends android.app.TabActivity {
private TabHost tabHost;
@Override
protected void onCreate(Bundle saveInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tab);
tabHost = getTabHost();
tabHost.setup();
TabHost.TabSpec spec;
Intent intent;
spec = tabHost.newTabSpec("Tab 00");
spec.setIndicator("Tab1");
intent = new Intent(this, FirstTabActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
spec.setContent(intent);
tabHost.addTab(spec);
spec = tabHost.newTabSpec("Tab 01");
spec.setIndicator("Tab2");
intent = new Intent(this, TabItem.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
spec.setContent(intent);
tabhost.addTab(spec);
spec = tabHost.newTabSpec("Tab 02");
spec.setIndicator("Tab3");
intent = new Intent(this, TabItem.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
spec.setContent(intent);
tabHost.addTab(spec);
tabHost.setCurrentTab(0);
}
}
<!-- activity_tab.xml -->
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".TabActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/backButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="back"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="title" />
</LinearLayout>
<TabHost
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
</TabHost>
</LinearLayout>
我希望“talkback”的焦点导航到
FrameLayout
最后一个选项卡之后加载到FirstTabActivity
(代码中的TabWidget
)中加载的活动。
换句话说,我希望每次滑动时它都按照
Tab1
-> Tab2
-> Tab3
-> FirstTabActivity
的顺序进行。
当然,当焦点移动到
FirstTabAcitivity
时,FirstTabActivity
内部的元素也应该是滑动导航的目标。
我试图在焦点位于最后一个选项卡上后将
tabHost.getCurrentView()
设为下一个焦点的目标,但没有成功。
我尝试使用
requestFocus()
,但结果是一样的。
我该如何解决这个问题?
我在这里找到了类似的答案点击这里