204

Android "L" プレビューの API diff レポートを見ると、ActionBarクラス内のナビゲーション モードに関連するすべてのメソッド ( setNavigationMode()addTab()selectTab()、 &c など) が表示されます。現在は推奨されていません。

ドキュメントでは次のように説明されています。

アクション バーのナビゲーション モードは非推奨であり、インライン ツールバーのアクション バーではサポートされていません。代わりに、他の一般的なナビゲーション パターンを使用することを検討してください。

想定される代替品は何ですか?

また、「インライン ツールバー アクション バー」は新しい概念ですか? 聞いたことはないと思います。

4

10 に答える 10

20

Android 5.0 のドキュメントが利用可能になったので、ツールバー ウィジェットの公式ドキュメントがあります

アプリケーション コンテンツ内で使用する標準ツールバー。

ツールバーは、アプリケーション レイアウト内で使用するアクション バーを一般化したものです。アクション バーは従来、フレームワークによって制御されるアクティビティの不透明なウィンドウ装飾の一部ですが、ツールバーは、ビュー階層内のネストの任意のレベルに配置できます

Toolbarウィジェットを使用して、アクション バーを置き換えることもできます。

setActionBar()アプリケーションは、メソッドを使用してツールバーをアクティビティのアクション バーとして指定することを選択できます。

ツールバーにはタブ自体を含めることができないため、アクション バーのタブが非推奨になったのはおそらくこれが原因です。

また、appcompat ライブラリを介して以前の Android バージョンでも利用できます。詳細については、Chris Banes によるこの投稿を参照してください。抜粋:

Android 5.0 では、新しいツールバー ウィジェットが導入されました。これは ActionBar パターンの一般化ですが、より多くの制御と柔軟性を提供します。ツールバーは、他のビューと同様に階層内のビューであり、残りのビューとのインターリーブ、アニメーション化、スクロール イベントへの反応を容易にします。

于 2014-10-18T22:56:17.040 に答える
3

非推奨のActionBarの「置換」のために、(コメントの古いコード)に従って、ActionBarタイプの変数のタイプをPagerTabStripに変更しました。

// ActionBar bigActionBar;
PagerTabStrip bigActionBar;

~actionBar の .selectTab(tabindex) の「置換」は、関連する ViewPager の .setCurrentItem(int) メソッドを次のように使用することでした (コメントの古いコード):

/*
ActionBar.Tab eventTab = bigActionBar.getTabAt(2);
bigActionBar.selectTab(eventTab);
*/
mViewPager.setCurrentItem(2);

これが役に立てば幸いです。

于 2014-11-16T02:59:50.307 に答える
1

私は同じ問題を抱えていましたが、この解決策は私に非常に適していました:

ビューページャーを含むレイアウト xml ファイルで、次のように PagerTabStrip を追加します。

<android.support.v4.view.PagerTabStrip
    android:id="@+id/pager_tab_strip"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="top"
    android:background="#996633"
    android:textColor="#CCCCCC"
    android:paddingTop="5dp"
    android:paddingBottom="5dp" />

ページ タイトルを制御するには、ViewPager ファイルに switch ステートメントを追加します。

@Override
public CharSequence getPageTitle(int position)
{
    switch (position)
    {
    case 0:
        return "Page 1";

    case 1:
        return "Page 2";

    case 2:
        return "Page 3";

    }

    return null;
}
于 2014-12-04T15:07:38.293 に答える
0

FragmentTabHost もオプションです。

このコードは、Android 開発者のサイトからのものです。

/**
 * This demonstrates how you can implement switching between the tabs of a
 * TabHost through fragments, using FragmentTabHost.
 */
public class FragmentTabs extends FragmentActivity {
    private FragmentTabHost mTabHost;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.fragment_tabs);
    mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
    mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);

    mTabHost.addTab(mTabHost.newTabSpec("simple").setIndicator("Simple"),
            FragmentStackSupport.CountingFragment.class, null);
    mTabHost.addTab(mTabHost.newTabSpec("contacts").setIndicator("Contacts"),
            LoaderCursorSupport.CursorLoaderListFragment.class, null);
    mTabHost.addTab(mTabHost.newTabSpec("custom").setIndicator("Custom"),
            LoaderCustomSupport.AppListFragment.class, null);
    mTabHost.addTab(mTabHost.newTabSpec("throttle").setIndicator("Throttle"),
            LoaderThrottleSupport.ThrottledLoaderListFragment.class, null);
    }
}
于 2014-12-24T05:54:25.600 に答える
0

これらのチュートリアルは、Material Design でスライド タブをサポートするアクション バー (現在は「ツールバー」 - argh) をまとめる際に役立つことがわかりました。

https://www.youtube.com/watch?v=Fl0xMuo10yA

http://www.exoguru.com/android/material-design/navigation/android-sliding-tabs-with-material-design.html

特定の状況に合わせて、これらのリソースを合成する必要があります。たとえば、exoguru.com のチュートリアルと同じスタイルのタブを手動で作成したくない場合があります。

于 2015-04-27T16:24:34.190 に答える