使用操作栏设计Android App的最佳方式

时间:2015-05-10 12:05:02

标签: android android-fragments android-activity android-actionbar

我想使用ActionBar开发Android应用。目前我在应用程序的开头并获得了一个Activity,包含ActionBar和一些Fragments。我已经可以更改标签了。但是当我从Fragment转移到另一个Fragment时,我遇到了ActionBar的问题。

我认为,这不是用例,使用Activity with ActionBar。

但是,这种情况的最佳做法是什么?

MainApplication

  • 标签1:
    • 的ListView
  • 标签2:
    • ListView - >的DetailView
  • 标签3:
    • ListView - >的DetailView
  • ActionBar中的设置 - 按钮:
    • ListView - >的DetailView

我应该为每个标签或更好的片段创建4个活动吗?

1 个答案:

答案 0 :(得分:0)

我想最好的方法是创建一个自定义操作栏并根据活动进行修改。这是一个例子..

首先,您必须为自定义操作栏创建布局,以便根据您的要求定义功能。这是xml文件......

自定义操作栏的布局:

<ImageView
    android:id="@+id/custom_actionbar_back_iv"
    android:layout_width="@dimen/small_margin_ar"
    android:layout_height="@dimen/very_small_margin_ar"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:src="@drawable/up_navigation"/>

<TextView
    android:id="@+id/custom_actionbar_titleText_tv"
    style="@style/wrapscreen"
    android:layout_centerVertical="true"
    android:layout_toRightOf="@+id/custom_actionbar_back_iv"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textColor="@color/white"
    android:textSize="@dimen/above_medium_text_size" />

<ImageButton
    android:id="@+id/custom_actionbar_goToArchiveActivity_ib"
    style="@style/wrapscreen"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:layout_marginRight="@dimen/medium_margin"
    android:background="@null"
    android:src="@drawable/ic_action_overflow" />

这是实施..

在onCreate()方法中定义setupactionBar()方法

private void setUpActionBar() {
        ActionBar actionBar = getActionBar();
        actionBar.setDisplayShowHomeEnabled(false);
        actionBar.setDisplayShowTitleEnabled(false);

        LayoutInflater layoutInflater = LayoutInflater.from(this);
        View customActionBarView = layoutInflater.inflate(R.layout.custom_actionbar, null);

        // this view is used to show tile
        TextView ActivityTitleTV = (TextView) customActionBarView.findViewById(R.id.custom_actionbar_titleText_tv);
        ActivityTitleTV.setText(R.string.title_text_archive);

        //this view can be used for back navigation
        ImageView backToRecorderIV = (ImageView) customActionBarView.findViewById(R.id.custom_actionbar_back_iv);
        backToRecorderIV.setVisibility(View.VISIBLE);
        backToRecorderIV.setOnClickListener(this);

        //Another view which has up navigation
        ImageButton goToArchiveActivityIB = (ImageButton) customActionBarView.findViewById(R.id.custom_actionbar_goToArchiveActivity_ib);
        goToArchiveActivityIB.setVisibility(View.GONE);

        actionBar.setCustomView(customActionBarView);
        actionBar.setDisplayShowCustomEnabled(true);
    }

    //listener for back navigation
    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.custom_actionbar_back_iv:
                Intent recorder = new Intent(ArchiveActivity.this, RecorderActivity.class);
                startActivity(recorder);
                finish();
                break;
        }
    }

希望这会有所帮助......