2

Androidから始めて、既存のアプリケーションにタブを追加したいと思います。

現在、XMLファイルで定義されたレイアウトのアクティビティが1つだけあります。他のタブを追加したいと思います。

私はそれを調べて、Android開発者サイトでhttp://developer.android.com/resources/tutorials/views/hello-tabwidget.htmlを見つけました。ただし、タブのレイアウトを定義するためにXMLは使用されません。

では、レイアウト専用のXMLファイルを使用してタブを簡単に追加するにはどうすればよいですか?

前もって感謝します。

4

3 に答える 3

4

私はそれを調べて、Android 開発者サイトでhttp://developer.android.com/resources/tutorials/views/hello-tabwidget.htmlを見つけました。ただし、これはタブのレイアウトを定義するために XML を使用しません。

はい、そうです。手順 4 を参照してください。


アップデート

Google はドキュメントを再編成し、このチュートリアルを削除しました。このサンプル プロジェクトTabWidgetでは、タブを定義するための XML の使用を確認できます。

于 2011-03-06T00:51:04.730 に答える
3

TabWidget レイアウトが必要な機能を果たさない状況に遭遇したので、ViewFlipper と RadioGroup を使用して偽装しました。そうすれば、インクルードを使用してタブ (ViewFlipper の各ビュー) のコンテンツを定義できます (Farray の回答のように)。

タブ自体は RadioGroup の RadioButtons でした。コードに OnCheckedChangeListener があり、それに応じて ViewFlipper の表示される子を設定するだけです。XML で RadioButton レイアウトを定義できます (テキストまたは画像などを使用)。

タブが画像を使用する疑似レイアウトを次に示します。

<LinearLayout>
    <ViewFlipper android:id="@+id/viewFlipper">
        <include android:id="@+id/tab1Content" layout="@layout/tab1Layout" />
        <include android:id="@+id/tab2Content" layout="@layout/tab2Layout" />
        <include android:id="@+id/tab3Content" layout="@layout/tab3Layout" />
    </ViewFlipper>
    <LinearLayout>
        <RadioGroup android:id="@+id/radgroup1" android:orientation="horizontal">
          <RadioButton android:id="@+id/rad1" android:button="@drawable/tab1" />
          <RadioButton android:id="@+id/rad2" android:button="@drawable/tab2" />
          <RadioButton android:id="@+id/rad3" android:button="@drawable/tab3" />
        </RadioGroup>
    </LinearLayout>
</LinearLayout>

そして、ここにリスナーがあります:

    private OnCheckedChangeListener onRadioButtonCheckedChanged = new OnCheckedChangeListener(){
    public void onCheckedChanged(RadioGroup group, int checkedId)
    {
        switch(checkedId)
        {
            case(R.id.rad2):
                viewFlipper.setDisplayedChild(1);
            break;
            case(R.id.rad3):
                viewFlipper.setDisplayedChild(2);
            break;
            default:
                viewFlipper.setDisplayedChild(0);
            break;
        }
    }
};
于 2011-03-06T01:40:19.503 に答える
1

実装はTabWidgetかなり厳格です-レイアウトをあまり制御できません。

独自のカスタムタブを作成する場合は、カスタムレイアウトを作成し、これらの「タブ」を作成するアクティビティからそれを呼び出すのが最善の策です。を使用してXMLで再利用可能なレイアウトを呼び出して<include layout="@layout/my_tab_layout" />から、再利用可能なクラスで独自の初期化コードを記述できます。

于 2011-03-06T01:03:17.800 に答える