1

Я следую these instructions, чтобы реализовать AppCompat Toolbar в своем приложении для Android. Я использую AppCompat версии 7: 22.0.1 Кроме того, я использую эту панель инструментов в дополнение к actionBar (она не заменяет ActionBar, как я вижу во многих других примерах).Панель инструментов Android AppCompat не реагирует на касание элементов действия

Появилась панель инструментов, и она даже отображает значок, который я обозначил, но он не отвечает, когда я касаюсь значка. У кого-нибудь была аналогичная проблема с AppCompat Toolbar? Любые предложения о том, что попробовать дальше?

Вот мой код из моего Разглядеть() метод в MainActivity.Java:

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" /> 

The Toolbar надувается из файла XML макет меню. Она состоит из элемента меню с одним элементом «пункт»:

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

Поместите панель LAST в макете, так что это закрасили все. Прокладка смежного ListView является частью ListView и потребляет события касания. –

+0

@EugenPechanec Вы правы. Это решает проблему. Благодаря! –

ответ

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 здесь, так как это более удобно здесь. Он делает то, что вы хотите сделать. Выровняйте представление рядом, а не над другим видом.

(EDIT:.. Я вижу, что это было прокомментировано уже, не понимаю, почему Потому что это ответ на вопрос)

+0

Я не знал, что LinearyLayout здесь более удобен. Это имеет смысл, и он работает хорошо. Спасибо. –

Смежные вопросы