2

内にTabWidgetネストされた がありHorizontalScrollViewます。プログラムでアクティブ/現在のタブを設定しています(これは問題ありません)。私の問題は、TabWidget新しくアクティブなタブを表示するためにスクロールしていないことです。

- 私は 9 つのタブを持っていますが、一度に表示されるのは 3 つだけです (つまり、タブの 3 つの「ページ」と考えてください)。私はタブ 1 (ページ 1) にいます。現在のタブをプログラムでタブ 8 に設定しました (3 ページ)。タブのコンテンツは適切に切り替わります (つまり、タブ 8 のコンテンツが表示されるようになりました) が、上部のタブにはまだタブ 1、2、および 3 が表示されます。手動で右にスクロールすると、タブ 8 が表示されます。 (適切に強調表示されます)。TabWidget現在アクティブなタブが表示されるように、自動的にスクロールしたい。

何か案は?

編集例のソース:

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        String tag;

        /* logic to populate tag from intent*/

        /* reason for this is because I know the tag of the tab I need, 
           not the index num. of tab */
        getTabHost().setCurrentTabByTag(tag);
        int i = getTabHost().getCurrentTab();

        getTabWidget().setCurrentTab(i);
        getTabWidget().focusCurrentTab(i);
    }
4

3 に答える 3

1

TabWidgetビューの focusableInTouchMode が false に設定されていることが判明しました。View.java ドキュメントによると:

A view will not actually take focus if it is not focusable ({@link #isFocusable} 
returns false), or if it is focusable and it is not focusable in touch mode 
({@link #isFocusableInTouchMode}) while the device is in touch mode.

問題を修正するために、ビューを繰り返し処理し、TabWidgetタッチ モードでフォーカス可能に設定しました。

for (int i = 0; i < count; i++) {
    getTabWidget().getChildAt(i).setFocusableInTouchMode(true);
}
于 2011-05-27T19:52:29.547 に答える