2

我正在尝试在操作栏中为不同的活动创建不同的项目集。作为一个页面上的示例,我想要一个搜索图标,但不在其他页面上。我在 menu.xml 中添加项目,然后在特定活动中膨胀整个页面,但我只想显示特定项目....怎么做?谢谢

4

2 回答 2

4

您可以对 MenuItems 使用MenuItem.setVisible(boolean)函数。有了这些,您可以使您的特定项目可见/不可见,就像您在活动中需要它们一样。

在 onCreateOptionsMenu() 回调中,您将拥有如下内容:

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
      ...
      // hide the menu item
      menu.findItem(R.id.yourItem).setVisible(false);
      ...
      return true;
  }

或者,您可以将单独的 menu.xml 用于您的不同活动。哪个会更干净。因为您将摆脱代码部分来处理您不需要的项目。

于 2013-11-10T12:26:47.823 回答
1

要在不同的活动之上添加不同的操作栏或工具栏,您可以按如下方式添加它们 sample_activity.xml

<android.support.v7.widget.Toolbar android:id="@+id/toolbar"
    android:layout_width="match_parent" android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" />

以及扩展 AppCompatActivity 的 java 文件中的以下代码,例如。sample_activity.class

public class sample_activityextends AppCompatActivity {
    Toolbar toolbar = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sample_activity);
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        // Get a support ActionBar corresponding to this toolbar
        android.support.v7.app.ActionBar ab = getSupportActionBar();

        // Enable the Up button
        ab.setDisplayHomeAsUpEnabled(true);
 }
}

正如我们在上面的活动中编写的代码

// 获取该工具栏对应的支持ActionBar android.support.v7.app.ActionBar ab = getSupportActionBar();

    // Enable the Up button
    ab.setDisplayHomeAsUpEnabled(true);

这将在您的活动中添加后退或顶部按钮,但为此您还需要在 AndroidManifest.xml 中进行以下更改

<activity android:name=".sample_activity"
    android:parentActivityName=".MainActivity">
    <meta-data  android:name="android.support.PARENT_ACTIVITY"
        android:value=".MainActivity"></meta-data>

</activity>
<activity android:name=".MainActivity"></activity>
于 2016-09-09T06:36:06.080 回答