19 ответов:
я адаптировал ответ Cliffus и назначил логотип-drawable в моем определении стиля actionbar, например, как это в res/style.XML-код:
<item name="android:actionBarStyle">@style/MyActionBar</item> <style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar"> <item name="android:background">#3f51b5</item> <item name="android:titleTextStyle">@style/ActionBar.TitleText</item> <item name="android:textColor">#fff</item> <item name="android:textSize">18sp</item> <item name="android:logo">@drawable/actionbar_space_between_icon_and_title</item> </style>drawable выглядит как Cliffus (здесь со значком запуска приложения по умолчанию) в res/drawable/actionbar_space_between_icon_and_title.XML-код:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/ic_launcher" android:right="20dp"/> </layer-list>в android_manifest.xml вы все еще можете установить другой значок приложения (значок запуска на "рабочем столе". Любое другое определение логотипа здесь видно в действиях без панель действий.
редактировать: убедитесь, что вы установили этот drawable как Логос, а не как значок вашего приложения, как некоторые из комментаторов.
просто сделайте XML drawable и поместите его в папку ресурсов "drawable" (без какой-либо плотности или другой конфигурации).
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/my_logo" android:right="10dp"/> </layer-list>последний шаг-установить этот новый drawable как логотип в вашем манифесте (или на объекте Actionbar в вашей деятельности)
удачи!
Я также столкнулся с подобной проблемой, в моем случае мне пришлось динамически устанавливать заголовки для каждого действия в зависимости от контента.
Так что это сработало для меня.
actionBar.setTitle(" " + yourActivityTitle);Если все, что вы хотите-это интервал, это самое простое решение, я мог думать.
вот как я смог установить отступ между значком home и заголовком.
ImageView view = (ImageView)findViewById(android.R.id.home); view.setPadding(left, top, right, bottom);Я не мог найти способ настроить это с помощью стилей XML ActionBar. То есть, следующий XML не работает:
<style name="ActionBar" parent="android:style/Widget.Holo.Light.ActionBar"> <item name="android:titleTextStyle">@style/ActionBarTitle</item> <item name="android:icon">@drawable/ic_action_home</item> </style> <style name="ActionBarTitle" parent="android:style/TextAppearance.Holo.Widget.ActionBar.Title"> <item name="android:textSize">18sp</item> <item name="android:paddingLeft">12dp</item> <!-- Can't get this padding to work :( --> </style>однако, если вы хотите достичь этого с помощью xml, эти две ссылки могут помочь вам найти решение:
https://github.com/android/platform_frameworks_base/blob/master/core/res/res/values/styles.xml
(это фактический макет, используемый для отображения значка home в панели действий) https://github.com/android/platform_frameworks_base/blob/master/core/res/res/layout/action_bar_home.xml
Это распространенный вопрос в Material Design, поскольку вы можете выровнять заголовок панели инструментов с содержимым в приведенном ниже фрагменте. Для этого вы можете переопределить заполнение по умолчанию "12dp" с помощью атрибута contentInsetStart= "72dp" на панели инструментов.макет XML, как показано ниже
панели инструментов.xml
<?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="wrap_content" android:background="@color/app_theme_color" app:contentInsetStart="72dp"/>тогда в вашей деятельности, называют
Toolbar toolbar = (Toolbar) activity.findViewById(R.id.toolbar); toolbar.setTitle("Title Goes Here");и вы в конечном итоге с этим:
для меня работала только следующая комбинация, протестированная от API 18 до 24
app:contentInsetLeft="0dp" app:contentInsetStart="0dp" app:contentInsetStartWithNavigation="0dp"где в "приложения" является :
xmlns:app="http://schemas.android.com/apk/res-auto"например.
<android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@color/SE_Life_Green" app:contentInsetLeft="0dp" app:contentInsetStart="0dp" app:contentInsetStartWithNavigation="0dp" > ....... ....... ....... </android.support.v7.widget.Toolbar>
Если вы используете панель инструментов из AppCompat (android.поддержка.v7.штучка.Панель инструментов, > = редакция 24, июнь 2016), отступ между значком и заголовком Может быть изменен со следующим значением:
app:contentInsetStartWithNavigation="0dp"чтобы улучшить мой ответ, вы можете использовать его на панели инструментов непосредственно в вашей деятельности или вы можете создать новый файл макета для вашей панели инструментов. В этом случае вам просто нужно импортировать @id панели инструментов, используя свойство include для каждого необходимого просмотр.
<android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:elevation="4dp" app:contentInsetLeft="0dp" app:contentInsetStart="0dp" app:contentInsetStartWithNavigation="0dp"> </android.support.v7.widget.Toolbar>затем вы можете импортировать макет в свою деятельность.xml
<include layout="@layout/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content"/>
используя
titleMarginStartработает для меня. Пример в Xamarin:<android.support.v7.widget.Toolbar xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" android:layout_height="wrap_content" android:layout_width="match_parent" android:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimary" app:titleMarginStart="24dp"/>установите логотип следующим образом:
mToolbar = FindViewById<SupportToolbar>(Resource.Id.toolbar); SetSupportActionBar(mToolbar); SupportActionBar.SetLogo(Resource.Drawable.titleicon32x32); SupportActionBar.SetDisplayShowHomeEnabled(true); SupportActionBar.SetDisplayUseLogoEnabled(true); SupportActionBar.Title = "App title";
Im использует пользовательское изображение вместо текста заголовка по умолчанию справа от логотипа моих приложений. Это настраивается программно, как
actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setDisplayUseLogoEnabled(true); actionBar.setCustomView(R.layout.include_ab_txt_logo); actionBar.setDisplayShowCustomEnabled(true);проблемы с приведенными выше ответами для меня-это предложение @Cliffus не работает для меня из-за проблем, которые другие изложили в комментариях, и в то время как @dushyanth programatic padding setting, возможно, работал в прошлом, я бы подумал, что тот факт, что интервал теперь установлен с помощью
android:layout_marginEnd="8dip"так как API 17 вручную устанавливает заполнение не должно иметь никакого эффекта. См. ссылку, которую он опубликовал в git, чтобы проверить ее текущее состояние.простое решение для меня-установить отрицательное поле на моем пользовательском представлении в панели действий, например
android:layout_marginLeft="-14dp". Быстрый тест показывает, что он у меня работает на 2.3.3 и 4.3 с помощьюActionBarCompatнадеюсь, это кому-то поможет!
я решил эту проблему с помощью пользовательского макета навигации
С его помощью вы можете настроить что-нибудь в заголовок на панели действий:
построить.gradle
dependencies { compile 'com.android.support:appcompat-v7:21.0.+' ... }AndroidManifest.xml
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name"> <activity android:name=".MainActivity" android:theme="@style/ThemeName"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>стили.XML
<style name="ThemeName" parent="Theme.AppCompat.Light"> <item name="actionBarStyle">@style/ActionBar</item> <item name="android:actionBarStyle" tools:ignore="NewApi">@style/ActionBar</item><style name="ActionBar" parent="Widget.AppCompat.ActionBar"> <item name="displayOptions">showCustom</item> <item name="android:displayOptions" tools:ignore="NewApi">showCustom</item> <item name="customNavigationLayout">@layout/action_bar</item> <item name="android:customNavigationLayout" tools:ignore="NewApi">@layout/action_bar</item> <item name="background">@color/android:white</item> <item name="android:background">@color/android:white</item>action_bar.xml
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/action_bar_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" android:drawableLeft="@drawable/ic_launcher" android:drawablePadding="10dp" android:textSize="20sp" android:textColor="@android:color/black" android:text="@string/app_name"/>
У меня была аналогичная проблема, но с интервалом между вверх и пользовательским значком приложения/логотипом в панели действий. Решение Dushyanth по настройке padding программно работало для меня (установка padding на значок приложения/логотипа). Я пытался найти андроид.Р.ИД.главная или ИД Р..АБС__дома (ActionBarSherlock только, так как это обеспечивает обратную совместимость), и, похоже, он работает на устройствах 2.3-4.3, на которых я тестировал.
для моего случая, это было с панелью инструментов я решил это так:
ic_toolbar_drawble.xml
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/ic_toolbar" android:right="-16dp" android:left="-16dp"/> </layer-list>в моем фрагменте я проверяю api:
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) toolbar.setLogo(R.drawable.ic_toolbar); else toolbar.setLogo(R.drawable.ic_toolbar_draweble);удачи!
вы можете изменить drawableSize вашего DrawerArrow следующим образом:
<style name="MyTheme" parent="android:Theme.WithActionBar"> <item name="drawerArrowStyle">@style/DrawerArrowStyle</item> </style> <style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle"> <item name="barLength">24dp</item> <item name="arrowShaftLength">24dp</item> <item name="arrowHeadLength">10dp</item> <item name="drawableSize">42dp</item> //this is your answer </style>это не правильный ответ, потому что вы не можете выбрать сторону заполнения и масштабирование значка DrawerArrow при изменении drawableSize (drawableSize = width = height). Но вы можете отступить слева. Для отступа справа делаем
findViewById(android.R.id.home).setPadding(10, 0, 5, 0);
я использовал этот метод
setContentInsetsAbsolute(int contentInsetLeft, int contentInsetRight)и это работает!int padding = getResources().getDimensionPixelSize(R.dimen.toolbar_content_insets); mToolbar.setContentInsetsAbsolute(padding, 0);
когда вы используете пользовательскую панель инструментов, вы можете использовать
toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.setTitle(R.string.activity_title); setSupportActionBar(toolbar); getSupportActionBar().setLogo(R.drawable.logo);и в вашем макете панели инструментов просто установите
app:titleMarginStart="16dp"обратите внимание, что вы должны установить значок в виде логотипа, не используйте
getSupportActionBar().setIcon(R.drawable.logo)вместо того, чтобы использовать:getSupportActionBar().setLogo(R.drawable.logo)
Я
AppBarLayoutи customImageButtonсделать так.<android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="wrap_content" app:elevation="0dp" android:background="@android:color/transparent" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="32dp" android:layout_height="32dp" android:src="@drawable/selector_back_button" android:layout_centerVertical="true" android:layout_marginLeft="8dp" android:id="@+id/back_button"/> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> </RelativeLayout> </android.support.design.widget.AppBarLayout>мой Java-код:
findViewById(R.id.appbar).bringToFront(); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); final ActionBar ab = getSupportActionBar(); getSupportActionBar().setDisplayShowTitleEnabled(false);
эта работа для меня, чтобы добавить отступы заголовка и
ActionBarзначок Я установил это программно.getActionBar().setTitle(Html.fromHtml("<font color='#fffff'> Boat App </font>"));
<string name="app_name">" "Brick Industry</string>просто добавить
" "на имя приложения Это добавит пространство между значком и заголовком

Comments