【问题标题】:Best way to design Android App with actionbar使用操作栏设计 Android 应用程序的最佳方法
【发布时间】:2015-05-10 12:05:02
【问题描述】:

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

我读到,这不是用例,将 Activity 与 ActionBar 一起使用。

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

主应用程序

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

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

【问题讨论】:

  • 好吧,如果你想根据标签片段更改标题,只要我说对了就更改标题,否则使用ViewPager 我认为这会更好

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


【解决方案1】:

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

首先,您必须为自定义操作栏创建布局,以便根据您的要求定义功能。这是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;
        }
    }

希望这会有所帮助...

【讨论】:

    猜你喜欢
    • 2018-01-21
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多