Удалить поле в значке панели инструментов Android

Я получаю это странное поле на панели инструментов моего приложения между значком и значком навигации на панели инструментов (как на изображении). Я понятия не имею, откуда он берется и как его удалить. После поиска в интернете я нашел это:

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:fitsSystemWindows="true"
    android:minHeight="?attr/actionBarSize"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    android:background="?attr/colorPrimaryDark"
    android:layout_margin="0dp"
    android:contentInsetLeft="0dp"
    android:contentInsetRight="0dp"
    android:contentInsetStart="0dp"
    android:contentInsetEnd="0dp"
    android:padding="0dp"
    app:contentInsetLeft="0dp"
    app:contentInsetRight="0dp"
    app:contentInsetStart="0dp"
    app:contentInsetEnd="0dp">
</android.support.v7.widget.Toolbar>

Но я все еще получаю это поле, как на рисунке: Поля

Изменить >> Решение

Что ж, после использования привязки макета я понял, что большая часть полей принадлежит значку (как на рисунке). Но могу ли я все же убрать это поле и изменить размер значка и текста заголовка. введите описание изображения здесь

Изменить

Следующее решение @Amir: Помощник для java:

class BasicActivity extends AppCompatActivity{
    protected Toolbar mToolbar;    /// Initilize it in onCreate methode
    .....

     protected void setupToolbar(String title) {
        toolbar=(Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        ActionBar ab = getSupportActionBar();
        if (ab != null) {
            ab.setDisplayHomeAsUpEnabled(true);
            ab.setDisplayShowHomeEnabled(true);
        }

       if (!TextUtils.isEmpty(title)) {
        setTitle(title);
    }
}

}

И в вашем классе активности:

class Main extends BasicActivity{
     @override
     protected void onCreate(Bundle saved){
          super.onCreate(saved);
          ....
          setupToolbar("MAIN");
     }
}

person Anish Silwal    schedule 11.07.2016    source источник
comment
установите contentInsetStart на ноль на панели инструментов.   -  person Amir    schedule 11.07.2016
comment
ContentInsetStart | контентInsetLeft | содержимоеInsetEnd | контентInsetRight   -  person Amir    schedule 11.07.2016
comment
я это уже делала....   -  person Anish Silwal    schedule 11.07.2016
comment
Поэтому самый простой способ — включить привязку макета, и вы сможете узнать, что это связано с вашим домашним значком или значком ящика.   -  person Amir    schedule 11.07.2016
comment
Пожалуйста, посмотрите редактирование .. и, пожалуйста, предложите ответ   -  person Anish Silwal    schedule 11.07.2016


Ответы (4)


Вы можете легко удалить Margin | отступ между заголовком и задним значком с помощью:

app:contentInsetStartWithNavigation="0dp"

Маржа | padding В левой/правой части панели инструментов:

app:contentInsetStart="0dp"

Также, если вам нужна дополнительная настройка, сделайте следующее:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/color_primary"
    app:contentInsetEnd="0dp"
    app:contentInsetLeft="0dp"
    app:contentInsetRight="0dp"
    app:contentInsetStart="0dp"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light">


    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_vertical">

        <ImageView
            android:id="@+id/icon_toolbar_left"
            style="@style/IconFont.Large"
            android:layout_width="48dp"
            android:layout_height="match_parent"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:background="?attr/selectableItemBackground" />



        <TextView
            android:id="@+id/text_toolbar_title"
            style="@style/Textview.White.MediumSmall"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_toLeftOf="@+id/icon_toolbar_right"
            android:layout_toRightOf="@+id/icon_toolbar_left"
            android:gravity="center"
            android:text="@string/nav_category"/>


        <ImageView
            android:id="@+id/icon_toolbar_right"
            style="@style/IconFont.Large"
            android:layout_width="48dp"
            android:layout_height="match_parent"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:background="?attr/selectableItemBackground"/>

    </RelativeLayout>

</android.support.v7.widget.Toolbar>
person Amir    schedule 11.07.2016
comment
только еще один вопрос, будет ли он поддерживать меню опций? - person Anish Silwal; 11.07.2016
comment
@ASK да, это тоже поддерживается. - person Amir; 11.07.2016
comment
хорошо, я понял, но теперь у меня есть еще одна проблема, если я хочу установить заголовок и значки, мне придется объявить функции для каждого действия, можете ли вы дать мне выход из этого тоже (может быть, как создать собственное представление панели инструментов расширение панели инструментов) - person Anish Silwal; 15.07.2016
comment
@ASK Создайте BaseActivity, которая расширит вашу Activity и поместит внутрь setToolbarTitle , setToolbarIcon и другие виды методов. тогда вам просто нужно передать свой заголовок и значки :) - person Amir; 15.07.2016
comment
Я отредактировал свой вопрос с решением из вашего подхода. Пожалуйста, проверьте, правильно ли я нахожусь, или исправьте ошибки. - person Anish Silwal; 15.07.2016

Вы можете настроить поля, изменив тему и стиль, например:

<style name="cusToolbarNavigationButtonStyle" parent="@style/Widget.AppCompat.Toolbar.Button.Navigation">
    <!--default is 56dp-->
    <item name="android:minWidth">0dp</item>  
    <item name="android:paddingLeft">16dp</item>
    <item name="android:paddingRight">16dp</item>
</style>

<style name="cusToolbarStyle" parent="@style/Widget.AppCompat.Toolbar">
    <!--default 4dp-->
    <item name="titleMargin">0dp</item> 
    <!--default @dimen/abc_action_bar_content_inset_with_nav-->
    <item name="contentInsetStartWithNavigation">0dp</item> 
</style>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

    <item name="toolbarNavigationButtonStyle">@style/cusToolbarNavigationButtonStyle</item>
    <item name="toolbarStyle">@style/cusToolbarStyle</item>

</style>
person 任志勇    schedule 09.11.2018
comment
Вы спасли мой день - person Daniel Park; 27.04.2021

Если вы хотите удалить поля/отступы из заголовка в CollapsingToolbarLayout, вы можете найти это полезным:

<android.support.design.widget.CollapsingToolbarLayout
    app:expandedTitleMarginStart="0dp"
    .../>
person jobbert    schedule 18.12.2017

если вы используете это

   <android.widget.Toolbar>
    android:contentInsetStart="0dp"
    android:contentInsetLeft="0dp"
</android.widget.Toolbar>

при использовании

    <androidx.appcompat.widget.Toolbar>

    app:contentInsetStart="0dp"
    app:contentInsetLeft="0dp"
</androidx.appcompat.widget.Toolbar>
person Muhammad Awais    schedule 17.09.2020