ActionBarのホームアイコンとタイトルの間にパディングを設定する方法を知っている人はいますか?
ActionBarのホームアイコンとタイトルの間にパディングを設定する方法を知っている人はいますか?
回答:
私はCliffusの回答を採用し、たとえばres / style.xmlで次のように、私のアクションバーのスタイル定義でlogo-drawableを割り当てました:
<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>
ドローアブルは、res / drawable / actionbar_space_between_icon_and_title.xmlのCliffusのドローアブル(ここではデフォルトのアプリランチャーアイコンを使用)のように見えます。
<?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では、別のアプリアイコン(「デスクトップ」のランチャーアイコン)を設定できます。ここでの別のロゴ定義は、アクションバーのないアクティビティに表示されます。
編集:このドローアブルを、一部のコメンターのようにアプリのアイコンではなく、ロゴとして設定してください。
XMLをドローアブルにして、リソースフォルダー「ドローアブル」に配置するだけです(密度やその他の構成はありません)。
<?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>
最後のステップは、この新しいドローアブルをマニフェスト(またはアクティビティのActionbarオブジェクト)にロゴとして設定することです
幸運を!
私も同様の問題に直面しました。私の場合、コンテンツに応じて各アクティビティに動的にタイトルを設定する必要がありました。
これでうまくいきました。
actionBar.setTitle(" " + yourActivityTitle);
必要なのが間隔だけなら、これは私が考えることができる最も簡単な解決策です。
app:titleMarginStart
、レイアウトXMLで属性を使用することです。
これは、ホームアイコンとタイトルの間のパディングを設定する方法です。
ImageView view = (ImageView)findViewById(android.R.id.home);
view.setPadding(left, top, right, bottom);
ActionBar xmlスタイルでこれをカスタマイズする方法は見つかりませんでした。つまり、次の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で実現しようとしている場合は、次の2つのリンクが解決策を見つけるのに役立つ可能性があります。
https://github.com/android/platform_frameworks_base/blob/master/core/res/res/values/styles.xml
(これは、アクションバーにホームアイコンを表示するために使用される実際のレイアウトです) https://github.com/android/platform_frameworks_base/blob/master/core/res/res/layout/action_bar_home.xml
padding
を使用して設定されなくなりましたmarginEnd
。API17以降に使用されているようです-これはおそらくこのソリューションを壊します。下記の鉱山を参照してください
ツールバーのタイトルを下のフラグメントのコンテンツに合わせたい場合があるので、これはマテリアルデザインの一般的な質問です。これを行うには、以下に示すように、toolbar.xmlレイアウトで属性contentInsetStart = "72dp"を使用して、「12dp」のデフォルトのパディングを上書きできます。
toolbar.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");
そして、あなたはこれで終わります:
app:titleMarginStart="dimension"
タイトルを直接ターゲットにすることもあります。
contentInsetStart
ホームアイコンとタイトルの間プットスペース、答えは少なくともそう言うことができます。私の今のテストでは、ロゴの前contentInsetStart
にスペースを置いているようです(確かにホームアイコンと同じではありません)。
私にとっては、次の組み合わせのみが機能し、API 18から24までテストされました
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
app:contentInsetStartWithNavigation="0dp"
「app」は次のとおりです。 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.support.v7.widget.Toolbar、> =リビジョン24、2016年6月)を使用している場合、アイコンとタイトルの間のパディングは次の値で変更できます。
app:contentInsetStartWithNavigation="0dp"
私の答えを改善するために、アクティビティ内のツールバーで直接使用するか、ツールバーの新しいレイアウトファイルを作成できます。この場合、必要な各ビューでincludeプロパティを使用して、ツールバーの@idをインポートするだけです。
<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>
その後、activity.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";
アプリのロゴの右側にあるデフォルトのタイトルテキストの代わりにカスタム画像を使用しています。これはプログラム的に次のように設定されています
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayUseLogoEnabled(true);
actionBar.setCustomView(R.layout.include_ab_txt_logo);
actionBar.setDisplayShowCustomEnabled(true);
私のための上記の回答の問題は、コメントで他の人が概説した問題のために@Cliffusの提案が私にとって機能しないことであり、@ dushyanthプログラムによるパディング設定が過去に機能した可能性がある一方で、間隔が今使って設定android:layout_marginEnd="8dip"
API 17は、手動で何の効果も持たないはずのパディングを設定するので。現在の状態を確認するには、彼がgitに投稿したリンクを参照してください。
私にとっての簡単な解決策は、actionBarのカスタムビューに負のマージンを設定することandroid:layout_marginLeft="-14dp"
です。簡単なテストでは、2.3.3と4.3で動作することがわかります。ActionBarCompat
これが誰かを助けることを願っています!
カスタムナビゲーションレイアウトを使用してこの問題を解決しました
これを使用すると、アクションバーのタイトルをカスタマイズできます。
build.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>
styles.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"/>
私の場合、それはツールバーで私は次のように解決しました:
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);
幸運を!
次のように、DrawerArrowのdrawableSizeを変更できます。
<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>
drawableSize(drawableSize = width = height)を変更すると、パディング側とDrawerArrowアイコンのスケーリングを選択できないため、これは正しい答えではありません。しかし、左からマージンを取ることができます。右から余白するには
findViewById(android.R.id.home).setPadding(10, 0, 5, 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
慣れ親しんでImageButton
います。
<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);
XMLで、app:titleMargin
次のようにツールバービューでを設定します。
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:titleMarginStart="16dp"/>
またはあなたのコードで:
toolbar.setTitleMargin(16,16,16,16); // start, top, end, bottom
タイトルにパディングを追加するためのこの作業とActionBar
、プログラムのために設定したアイコンの作業。
getActionBar().setTitle(Html.fromHtml("<font color='#fffff'> Boat App </font>"));
<string name="app_name">" "Brick Industry</string>
ただ、追加" "
アプリ名には、アイコンとタイトルの間にスペースを追加します