Android AppCompat工具栏不响应触摸操作项

时间:2015-05-06 21:31:04

标签: android android-layout android-support-library android-actionbar-compat android-toolbar

我跟随these instructions在我的Android应用中实施AppCompat Toolbar。我正在使用AppCompat版本7:22.0.1此外,除了actionBar之外,我还使用此工具栏(它不会替换ActionBar,正如我在许多其他示例中看到的那样。)< / p>

工具栏显示,它甚至显示我指定的图标,但是当我触摸图标时它没有响应。是否有人与AppCompat Toolbar有类似的问题?有关下一步尝试的建议吗?

这是来自MainActivity.Java中的browse()方法的代码:

Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);

// Set an OnMenuItemClickListener to handle menu item clicks
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
    @Override
    public boolean onMenuItemClick(MenuItem item) {
        // Handle the menu item
        switch (item.getItemId()) {
            case R.id.browse_back_button:
                Toast toast = Toast.makeText(context, text, duration);
                toast.show();
                restart(view);
            default:
                return false;
        }
    }
});

// Inflate a menu to be displayed in the toolbar
toolbar.inflateMenu(R.menu.toolbar_menu);

我将这段代码放在XML布局文件中,作为RelativeLayout元素中的第一项。

<android.support.v7.widget.Toolbar
    android:id="@+id/my_awesome_toolbar"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:minHeight="?attr/actionBarSize"
    android:background="#FFFF00" />

Toolbar从菜单布局xml文件中膨胀。它由一个菜单元素和一个单独的项目组成。元素:

<item android:title="Back"
    android:id="@+id/browse_back_button"
    android:icon="@drawable/ic_action_back"
    app:showAsAction="always" />

1 个答案:

答案 0 :(得分:2)

ListView绘制在工具栏视图的顶部,因此这将是获取触摸事件的视图。您应该将Toolbar作为最后一个元素放置在布局中,或者您应该使用垂直LinearLayout,或者应该使用android:layout_below

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">

  <ListView
      android:id="@+id/listViewBrowse"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:paddingLeft="@dimen/activity_horizontal_margin"
      android:paddingRight="@dimen/activity_horizontal_margin"
      android:paddingTop="?attr/actionBarSize" />

  <android.support.v7.widget.Toolbar
      android:id="@+id/my_awesome_toolbar"
      android:layout_height="wrap_content"
      android:layout_width="match_parent"
      android:minHeight="?attr/actionBarSize"
      android:background="#FFFF00" />

</RelativeLayout>

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MainActivity"
    android:orientation="vertical">

  <android.support.v7.widget.Toolbar
      android:id="@+id/my_awesome_toolbar"
      android:layout_height="wrap_content"
      android:layout_width="match_parent"
      android:minHeight="?attr/actionBarSize"
      android:background="#FFFF00" />

  <ListView
      android:id="@+id/listViewBrowse"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:paddingLeft="@dimen/activity_horizontal_margin"
      android:paddingRight="@dimen/activity_horizontal_margin"
      />

</LinearLayout>

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">

    <android.support.v7.widget.Toolbar
       android:id="@+id/my_awesome_toolbar"
       android:layout_height="wrap_content"
       android:layout_width="match_parent"
       android:minHeight="?attr/actionBarSize"
       android:background="#FFFF00" />

    <ListView
        android:id="@+id/listViewBrowse"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:layout_below="@id/my_awesome_toolbar" />

</RelativeLayout>

我会在这里使用LinearLayout,因为这里更方便。它做你想做的事。将视图与另一个视图旁边的视图对齐,而不是在另一个视图上。

(编辑:我看到这已经被评论过了,不明白为什么。因为这是问题的答案。)