0

下部にタブ バーがあるアプリを開発する必要がありますが、Fragments には多くの問題があり、Android ドキュメントには TabHost と Fragments の使用方法が示されています。
すべてのタブスタックで正しく行う方法については、何も表示されていないためです。

タブ1に移動できるので、開いているフラグメントAです。次に、フラグメントBを深く開いて、タブをタブ2に切り替えたり、タブ1で同じフラグメントBを表示したりできます。

すべてのタブに FragmentActivity を作成するソリューションがいくつかありますが、その管理には非推奨の TabActivity を使用する必要があります。

たぶん、タブバーを描画してすべてのレイアウトに配置し、ユーザーがタブバーボタンを押すたびにアクティビティを開始できますか?

これが可能であれば、これを実装した人もいれば、描画方法や使用方法のチュートリアルを示すこともできますか?

ありがとう。

4

2 に答える 2

4

XML down_tabs.xml で、このコードを追加します

<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:orientation="vertical"
    android:layout_width="fill_parent" android:layout_height="fill_parent">
    <FrameLayout android:id="@android:id/tabcontent"
        android:layout_width="fill_parent" android:layout_height="0dip"
        android:layout_weight="1" />

    <TabWidget android:id="@android:id/tabs"
        android:layout_width="fill_parent"        android:layout_height="wrap_content"
        android:layout_weight="0"  />
</LinearLayout>

そしてActivityクラスでは、次のようにタブ仕様を追加します。

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.down_tabs);
    initTabs();
}

private void initTabs() {
    // Set Calendar Tab
    // getTabWidget().setDividerDrawable(R.drawable.tab_divider);
    getTabWidget().setPadding(0, 0, 0, 0);
    addTab("", R.drawable.home_tab_drawable, CalendarUIActivity.class);
    addTab("", R.drawable.lucky_dates_drawable, LuckyDatesActivity.class);
    addTab("", R.drawable.life_stages_drawable, LifeStagesActivity.class);
    addTab("", R.drawable.find_items_drawable, FindItemsActivity.class);
    addTab("", R.drawable.more_tab_drawable, MoreActivity.class);
}

private void addTab(String labelId, int drawableId, Class<?> targetClass) {
    TabHost tabHost = getTabHost();
    Intent intent = new Intent(this, targetClass);
    TabHost.TabSpec spec = tabHost.newTabSpec("tab" + labelId);

    View tabIndicator = LayoutInflater.from(this).inflate(
            R.layout.tab_indicator, getTabWidget(), false);
    TextView title = (TextView) tabIndicator.findViewById(R.id.title);
    title.setText(labelId);
    ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon);
    icon.setImageResource(drawableId);

    tabIndicator.setBackgroundResource(R.drawable.tab_backgroud);
    // //////////
    spec.setIndicator(tabIndicator);
    spec.setContent(intent);
    tabHost.addTab(spec);

}

うまくいくことを願っています。

于 2012-04-17T07:48:59.703 に答える
0

はい、良い答えです..フラグメントは簡単に作業できます..あなたは知っています..

<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@android:id/tabhost" android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <LinearLayout android:orientation="vertical"
            android:layout_width="fill_parent" android:layout_height="fill_parent">

            <FrameLayout android:id="@android:id/tabcontent"
                android:layout_width="fill_parent" android:layout_height="0dip"
                android:layout_weight="1" />

            <TabWidget android:id="@android:id/tabs"
                android:layout_width="fill_parent" android:layout_height="wrap_content"
                android:layout_weight="0" />
        </LinearLayout>
    </TabHost>

完全なチュートリアルにアクセスするには

http://thepseudocoder.wordpress.com/2011/10/04/android-tabs-the-fragment-way/

http://android.codeandmagic.org/2011/07/android-tabs-with-fragments/

于 2013-03-20T09:16:35.267 に答える