【问题标题】:Adding an action item to actionbar in fragment将操作项添加到片段中的操作栏
【发布时间】:2016-06-07 23:40:15
【问题描述】:

我正在开发一个应用程序,该应用程序中有 3 个活动

  1. 登录
  2. 主要
  3. PhotoViewer 扩展了 fragmentActivity

在清单中:

 <activity
        android:name=".PhotoViewerActivity"
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:label="@string/title_activity_photo_viewer"
        android:parentActivityName=".MainActivity"
        android:theme="@style/FullscreenTheme" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.ceiva.snap.MainActivity" />
    </activity>

有人可以建议我如何在操作栏右侧添加“定制器”文本,仅用于 PhotoViewerActivity。

我也试过这样做:

    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setDisplayShowTitleEnabled(true);
   // getActionBar().setIcon(android.R.color.transparent);
    getActionBar().setTitle("Back");
    Log.i(TAG, "actionbar  " + getActionBar().isShowing());

    ActionBar actionBar = getActionBar();

    TextView customizerView = new TextView(getApplicationContext());
    customizerView.setEnabled(true);
    customizerView.setVisibility(View.VISIBLE);
    customizerView.setText(getString(R.string.action_customizer));
    customizerView.setTextSize(16);
    customizerView.setPadding(100, 40, 40, 40);


    actionBar.setCustomView(customizerView);

后面的标题显示在左侧,但 textview 不显示。

【问题讨论】:

  • 您是在谈论操作栏/工具栏中的菜单选项吗?
  • 是的,想在操作栏中添加另一个项目。
  • 我创建了一个新的 XML 文件,其中包含所需的项目作为 textview,并按如下方式执行:getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setIcon(android.R.color.transparent); getActionBar().setTitle("返回"); getActionBar().setDisplayShowCustomEnabled(true); LayoutInflater inflator = (LayoutInflater) this .getSystemService(Context.LAYOUT_INFLATER_SERVICE);查看 v = inflator.inflate(R.layout.picture_viewer_action_bar, null); getActionBar().setCustomView(v);它按我的预期工作。
  • 您可以使用选项菜单来实现这一点。
  • 我试过了,但菜单项没有出现。你的意思是在 onCreateOptionsMenu 中膨胀一个菜单 xml 并在那里访问菜单项?

标签: android android-actionbar fragment


【解决方案1】:

你可以试试这个

1.在menu文件夹中创建xml文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item android:id="@+id/action_customize"
      android:icon="@drawable/ic_action_customize"
      android:title="@string/action_customize"
      android:showAsAction="ifRoom"/>
</menu>

2.在你的活动中

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.activity_main_actions, menu);
        return super.onCreateOptionsMenu(menu);
    }

3.您可以为您的菜单项设置操作

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Take appropriate action for each action item click
    switch (item.getItemId()) {
    case R.id.action_customize:
        // DO STUFF
        return true;

    default:
        return super.onOptionsItemSelected(item);
    }
}

【讨论】:

  • 我以前用过这个,但是因为我的活动扩展了 fragmentactivity 并且 setHasOptionsMenu(boolean) 无法访问,所以它不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多