0

各アクティビティの上部にナビゲーション バーを配置したいと思います (参照: スクリーンショット)。ナビゲーション バーには、2 つのボタン (前と次のアクティビティ) とアクティビティ インジケーターが必要です。SOでいくつかのソリューションを見てきました(インクルード、フラグメント、アクションバーを使用)が、どれが最適か、または誰かが別のオプションを持っているでしょうか?

ここに画像の説明を入力

4

3 に答える 3

1

CommonswareMartinSVKの両方に同意します。http://code.google.com/p/sherlock-demo/でコード サンプルを試してみることをお勧めします。前述のポスターの両方が言及しているように、ViewPager を使用して、フラグメント間で水平にスワイプできるようにします。ただし、最初に要求したように、画面の上部に視覚的な表示を提供するタブ ナビゲーションも使用します。Android UI の作成に関するアイデアについては、http://developer.android.com/design を参照してください

于 2012-08-18T18:12:11.400 に答える
1

この機能はViewPagerクラスによって提供されます。アクティビティの代わりにフラグメントを提供すると、提供されたビュー間ですばやく効率的に水平スクロールできます。アクティビティを 1 つだけ使用するため、ナビゲーション バーは常に表示されます。変更される唯一の部分は、ViewPager のページです。

ナビゲーション バーに関しては、いくつかのオプションがあります。ビューの独自の実装を提供できますが、ViewPager の現在のページを設定するページを変更するためのリスナーを作成する必要があります。これは最も複雑な方法です。

別の解決策は、多くの点で役立つActionBarSherlockを使用することです。そこで、アクション バーのナビゲーションを ViewPager に接続できます。このソリューションは、最も単純で堅牢です。Google IOアプリで、それがどのように行われたかを確認できます。家庭での活動は、あなたが見るべきものです。このソリューションの問題は、ナビゲーターの定義済みビューが表示されることです。

おそらく最後の解決策は、Page Indicatorを試してみることです。これにより、ナビゲーションバーの実装が簡素化されます。

ここに記載されているものはすべて ViewPager の上にあるので、必ずそれを使用してください。私は他のより良い解決策を知りません。問題は、ナビゲーションをどのように実装したいかです。

于 2012-08-18T17:44:00.337 に答える
-1

私の選択は、共有アクティビティ クラス (たとえば BaseActivity) を作成し、基本的なレイアウトを設定する onCreate メソッドをオーバーライドすることです。子クラスは setContentView の setContent インスタンスを使用する必要があります

public class BaseActivity extends Activity {
    private LayoutInflater mInflater;

    @Override
    public void onCreate(Bundle b) {
         super.onCreate(b);
         setContentView(R.layout.base);
    }

    public void setContent(View content) {
         setContentPart(R.id.baseContentContainer, content);
    }

    public void setContent(int contentLayoutId) {
        setContentPart(R.id.baseContentContainer, contentLayoutId);
    }

    private void setContentPart(int containerId, int layoutId) {
        final LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
        setContentPart(containerId, inflater.inflate(layoutId, null));
    }

    private void setContentPart(int containerId, View view) {
        final ViewGroup vg = (ViewGroup) findViewById(containerId);
        vg.setVisibility(view != null ? View.VISIBLE : View.GONE);
        vg.removeAllViews();
        if (view != null) vg.addView(view, layoutFillParent);
    }

    public LayoutInflater getLayoutInflater() {
        if (mInflater == null) mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        return mInflater;
    }


}
于 2012-08-18T17:28:33.807 に答える