it-swarm.com.ru

Заголовок и т.д. Не отображаются на панели инструментов 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>
15
AJW

Правка: Ok, так что это должно быть установлено совершенно другим способом для работы. Я предположил (поскольку я еще не много работал с 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().

27
Darwind

Учебное пособие: 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>

Джава

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
2
Half Moon

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

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

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

0
Richimf