Название и т.д. Не отображаются в панели инструментов Android

Я только что добавил панель инструментов Android в приложение, над которым я работаю. Расположение панели инструментов корректно работает с расположением панели инструментов вверху дисплея. Тем не менее, панель инструментов отображается в виде пустой цветной полосы... Значок заголовка приложения и переполнения не отображается на панели инструментов. Любые идеи о том, как исправить?

ToolbarActivity.java:

public abstract class ToolbarActivity extends ActionBarActivity {

private Toolbar toolbar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    if (toolbar != null) {
        setSupportActionBar(toolbar);
        getSupportActionBar().setHomeButtonEnabled(true); 
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    toolbar.setTitle("app name");
    }
}

toolbar.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
android:background="@color/ColorPrimary" >
</android.support.v7.widget.Toolbar>

menu_main.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item android:id="@+id/action_settings"
    android:title="@string/action_settings"
    android:orderInCategory="100"
    app:showAsAction="always" />
</menu>

style.xml:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
      <item name="windowActionBar">false</item>
      <item name="android:windowNoTitle">true</item>
      <item name="colorPrimary">@color/ColorPrimary</item>
      <item name="colorPrimaryDark">@color/ColorPrimaryDark</item>
</style>

Ответы

Ответ 1

EDIT: Хорошо, поэтому это нужно установить совершенно по-другому. Я предположил (потому что я еще не работал с ToolBar, но при использовании setActionBar(toolbar) он автоматически добавил пользовательский ToolBar к представлению содержимого - но это было не так.

Таким образом, большая проблема заключается в том, что ToolBar никогда не добавляется в текущее содержимое контента и, следовательно, никогда не будет видимым, пока вы фактически не добавите ToolBar в текущее содержимое.

Существуют разные подходы, но я покажу только один из них.

Вместо файла toolbar.xml вы должны добавить ToolBar непосредственно в файл макета Activity.

Вот пример класса Activity и XML для совместного использования с Activity:

MainActivity.java

public class MainActivity extends ActionBarActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        if(toolbar != null) {
            setSupportActionBar(toolbar);
            getSupportActionBar().setTitle("My custom toolbar!");
            getSupportActionBar().setHomeButtonEnabled(true);
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        }
    }
}

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:background="@android:color/holo_red_light"
        android:minHeight="100dp">

    </android.support.v7.widget.Toolbar>

</RelativeLayout>

Ваш файл styles.xml правильный, как есть.

Важно отметить, что после настройки ActionBar на пользовательский ToolBar, вы используете методы по умолчанию для изменения способа отображения ActionBar. Например, задание заголовка должно быть установлено из getSupportActionBar().setTitle(), а не из toolbar.setTitle().

Ответ 2

Учебное пособие: http://www.viralandroid.com/2015/08/android-toolbar-example.html

styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    ...
  <!-- Customize your theme here. -->
</style>

файл макета

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

Java

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

Ответ 3

В манифесте добавьте следующее...

 <activity android:name=".Activity.ToolbarActivity"
            android:label="@string/yourStringTitle"
            />

Надеюсь, что это поможет