如何让Android对讲焦点在TabActivity的tabcontent内?

问题描述 投票:0回答:1

我英语不好,所以我使用谷歌翻译来提问。

我的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()
,但结果是一样的。

我该如何解决这个问题?

java android android-tabhost talkback
1个回答
0
投票

我在这里找到了类似的答案点击这里

© www.soinside.com 2019 - 2024. All rights reserved.