ActionBar के होम आइकन और शीर्षक के बीच पैडिंग


110

क्या किसी को पता है कि एक्शनबार के होम आइकन और शीर्षक के बीच पैडिंग कैसे सेट करें?


13
हैक की दुनिया में आपका स्वागत है: एंड्रॉइड । यह सरल बात किसी को भी मिलनी चाहिए थी (एक नौसिखिया भी) अगर हमें अन्य यूआई तकनीक और एप्लिकेशन प्रोग्रामिंग में इसकी आवश्यकता है। हालांकि Android में, यह वास्तव में रहस्यमय है। वे जानबूझकर सुविधा को दूर छिपाते हैं, इसे जटिल बनाते हैं और बस एंड्रॉइड को हैक की दुनिया बना देते हैं । मुझे नहीं पता कि उनका अंतिम उद्देश्य क्या है।
किंग किंग

1
यह प्रश्न और उत्तर टूलबार के अंदर विशेषताओं के साथ इसे प्राप्त करने का तरीका देते हैं (समर्थन v7)
एलिजाबेथ

Android, iOS से भी ज्यादा बेकार है।
बोरहज

जवाबों:


69

मैंने क्लिफस उत्तर को अनुकूलित किया और अपनी एक्शनबार शैली परिभाषा में लोगो-ड्रॉबल को असाइन किया, उदाहरण के लिए इस तरह से रेस / स्टाइल में। xx:

<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 में दिखता है:

<?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 में आप अभी भी एक अलग ऐप आइकन (लॉन्चर 'लॉन्चर' डेस्कटॉप 'पर सेट कर सकते हैं। यहां कोई भी अलग लोगो परिभाषा एक्शन बार के बिना गतिविधियों में दिखाई देती है।


यह एंड्रॉइड 5.1 पर लॉग ऑन क्यों नहीं करता है
लोगन गुओ

क्षमा करें, मैं 5.1 में इसके बारे में कुछ नहीं कह सकता। मैंने अधिक लचीले टूलबार-नियंत्रण पर स्विच किया। यदि पहले से ही नहीं किया गया है, तो मैं यहां एक नया प्रश्न StackOverflow पर खोलने और कुछ और विवरण लिखने की सलाह देता हूं, आपके लिए क्या काम किया है (<5.1) और क्या काम नहीं करता है और आपने 5.1 के साथ क्या किया, लेकिन एक समाधान नहीं आया।
मिन्स्की

धन्यवाद @ मिन्स्की, मैंने आपकी समस्या को हल करने के लिए आपके उत्तर से प्रेरित होकर, मुझे नीचे दिए गए उत्तर में कैसे डाला :)
संदर्भ

यदि मिपमप का उपयोग किया जाए तो क्या होगा?
यूरा शिनकरेव

100

संपादित करें : सुनिश्चित करें कि आपने इस ड्रॉ को लोगो के रूप में सेट किया है , न कि आपके ऐप आइकन जैसा कि कुछ टिप्पणीकारों ने किया।

बस एक एक्सएमएल को बनाने योग्य बनाएं और इसे संसाधन फ़ोल्डर में डालें "ड्रॉबल" (बिना किसी घनत्व या अन्य कॉन्फ़िगरेशन के)।

<?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>

अंतिम कदम यह है कि अपने प्रदर्शन में (या एक्शनबार ऑब्जेक्ट पर आपकी गतिविधि में) लोगो के रूप में इस नए योग्‍य को सेट किया जाए।

सौभाग्य!


1
इस समाधान के साथ एक बड़ी समस्या है। मैंने इसका इस्तेमाल किया और @Alesqui सही है - ऐप आइकन बदल गया और छोटा हो गया ... आप आइकन बदल सकते थे लेकिन चूंकि dp अलग-अलग फोन के लिए अलग है, तो यह समाधान किसी उत्पादन ऐप में कटौती नहीं करता है।
जोहान एस

3
सुनिश्चित करें कि आप इस ड्रॉ को लोगो के रूप में सेट कर रहे हैं, अपने ऐप आइकन के रूप में नहीं। सौभाग्य!
क्लिफस

1
मैं विकृति भी देख रहा हूं। यदि मैं ऊपर के रूप में सही पैडिंग लागू करता हूं, तो छवि के दाहिने हाथ की तरफ फसल होती है।
नील

1
दिलचस्प समाधान, लेकिन मेरे लिए काम नहीं करता है - मैं या तो इस तरह से अतिरिक्त पैडिंग जोड़ सकता हूं या लोगो छवि को क्रॉप कर सकता हूं - कोई अच्छा (4.3)
डोरी

1
@ क्लिफस - अच्छा समाधान। मेरी आवश्यकता लोगो को ले जाने के लिए थी इसलिए मैंने उपयोग किया: android: left = "- 4dp"।
थरकिरनमन

55

मुझे भी इसी तरह के मुद्दे का सामना करना पड़ा, मेरे मामले में मुझे सामग्री के आधार पर प्रत्येक गतिविधि पर गतिशील रूप से शीर्षक सेट करना पड़ा।

तो यह मेरे लिए काम किया।

actionBar.setTitle("  " + yourActivityTitle);

यदि आप सभी चाहते हैं कि रिक्ति है, तो यह सबसे आसान समाधान है जिसके बारे में मैं सोच सकता था।


13
क्यों गिरा वोट? यह एक गलत जवाब नहीं है, बस इसे करने का एक और तरीका है।
राहुल सेनानी

3
@idrbebeintheair हां मैं मानता हूं कि यह "सबसे साफ" तरीका नहीं है इसलिए अब यह केवल सबसे आसान है। लेकिन जब आप कुछ इंगित करते हैं, तो कृपया एक वैकल्पिक समाधान पोस्ट करें। मैंने इस मुद्दे का सामना किया और यह वही है जो मैंने अपने ऐप में उपयोग किया है, इसलिए मैंने साझा किया।
राहुल सेनानी

3
वास्तव में? यह समाधान भिन्न DPI के साथ अलग-अलग स्क्रीन पर समान कार्य नहीं कर सकता है।
रोमन बुग्यायन

5
मैं इस समाधान को नहीं चुनूंगा क्योंकि मुझे वास्तव में अपने ऐप में sth को अधिक स्थिर रखने की आवश्यकता है, लेकिन मैं उन सभी लोगों से पूछना चाहता हूं जो "यह साफ नहीं है"। ओह, माय, गॉड, इस समस्या के लिए CLEAN समाधान कहां है? उन सभी लोगो के साथ हैक, सेटपैडिंग मेरे लिए या तो साफ नहीं दिखता है! बस टिप्पणियों को पढ़ें, कितने लोगों को इसके साथ समस्या है। एंड्रॉइड सेट करना: शीर्षक पर पेडिंग लाईट - कि अगर यह काम किया होता तो CLEAN क्या होता। हम यहां हैक का आविष्कार करने के लिए अंधेरे में रह गए हैं क्योंकि किसी कारण से यह काम नहीं करता है जिस तरह से इसे काम करना चाहिए था। तो कुछ भी "साफ नहीं" है।
वरवरा कलिनािना

1
क्लीनर app:titleMarginStartएक्सएमएल में विशेषता का उपयोग करने के लिए एक क्लीनर समाधान होगा ।
लार्स

40

इस तरह से मैं होम आइकन और शीर्षक के बीच पैडिंग सेट करने में सक्षम था।

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 के माध्यम से प्राप्त करना चाह रहे हैं, तो ये दोनों लिंक आपको समाधान खोजने में मदद कर सकते हैं:

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/res/layout/action_bar_home.xml


1
@Dushyanth मैं सिर्फ कोशिश की, लेकिन imageview पर अशक्त सूचक अपवाद कहते हैं। मेरे पास एक्शन बार में HomeUpIndicator और होम आइकन दोनों हैं।
कृष्ण श्रेष्ठ

1
यह केवल API> = 11 के लिए एंड्रॉइड के रूप में काम कर रहा है ।id.home को एपीआई 11 में पेश किया गया था। मैं एक्शनबारकोम्पैट का उपयोग करता है, जिसमें एक्शनबार भी प्री हनीकंप डिवाइस पर है। वहां इसे कैसे संभालना है?
टोबियास डेस

थोड़ा सा हैक। क्लिनर समाधान के लिए क्लिफस का जवाब नीचे देखें।
dhaag23

होम स्पेसिंग का उपयोग अब सेट नहीं है padding, यह marginEndएपी 17 के बाद से उपयोग करना प्रतीत होता है - जो शायद इस समाधान को तोड़ देगा। नीचे मेरा देखें
डोरी

@tobias R.id.home वहां के स्तर पर है, इससे पहले भी स्तर 11. यह अभी उपलब्ध नहीं है
ऑस्करार्ट

32

यह सामग्री डिजाइन में एक सामान्य प्रश्न है क्योंकि आप नीचे दिए गए टुकड़े में सामग्री के साथ अपने टूलबार शीर्षक को पंक्तिबद्ध करना चाहते हैं। ऐसा करने के लिए, आप अपने टूलबार. xml लेआउट में विशेषता सामग्री InsetStart = "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");

और आप इसे समाप्त करते हैं:

टूलबार


यह मेरे मामले में काम करने के लिए बिल्कुल नहीं है। कृपया मुझे गतिविधि के लिए सेट शैली बताएं
नितिन मेस्टा

11
ऐसा करने का यह सही तरीका है। app:titleMarginStart="dimension"सीधे शीर्षक पर निशाना लगाना भी है।
मार्कस रूबी

अधिकांश उपयोगकर्ताओं के लिए यह "सही" उत्तर होगा। एक आकर्षण के रूप में काम करता है, धन्यवाद!
तारास

1
यह "सही" उत्तर कैसे है, अगर सवाल होम आइकन और शीर्षक के बीच पैडिंग के बारे में था? यहां होम आइकन का उल्लेख नहीं किया गया है (न ही लोगो या जो भी भिन्नता है)। यदि contentInsetStartहोम आइकन और शीर्षक के बीच में जगह है, तो उत्तर कम से कम ऐसा कह सकता है। मेरा परीक्षण अभी लोगो के सामनेcontentInsetStart स्थान रखने के लिए लग रहा था (जो माना जाता है कि होम आइकन के समान नहीं है)।
लार्स

30

मेरे लिए केवल निम्नलिखित संयोजन ने काम किया, एपीआई 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>

1
बहुत बहुत धन्यवाद। @ अजीत
शाहिद

1
महान। यह बेहतर होगा यदि आप नमूना संबंधित XML प्रदान कर सकते हैं यह स्पष्ट करने के लिए कि यह कहां रखा जाए। (मुझे पता है कि इस लाइन को कहां रखा जाए)
जॉन पैंग

नमस्कार @JohnPang, आप इसे अपने लेआउट के टूलबार में रख सकते हैं जैसा कि ऊपर दिखाया गया है।
अजीत

29

यदि आप AppCompat (android.support.v7.widget.Toolbar,> = संशोधन 24, जून 2016) से टूलबार का उपयोग कर रहे हैं, तो आइकन और शीर्षक के बीच पैडिंग निम्नलिखित मान के साथ बदला जा सकता है:

  app:contentInsetStartWithNavigation="0dp"

मेरे उत्तर को बेहतर बनाने के लिए, आप इसे सीधे अपनी गतिविधि के अंदर अपने टूलबार पर उपयोग कर सकते हैं या आप अपने टूलबार के लिए एक नई लेआउट फ़ाइल बना सकते हैं। इस स्थिति में, आपको बस अपने टूलबार के @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>

फिर आप अपनी गतिविधि पर अपना लेआउट आयात कर सकते हैं। Xml

<include
        layout="@layout/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

महान। यह बेहतर होगा यदि आप नमूना संबंधित XML प्रदान कर सकते हैं यह स्पष्ट करने के लिए कि यह कहां रखा जाए। (मुझे पता है कि इस लाइन को कहां रखा जाए)
जॉन पैंग

@ जोहानपांग ने मेरा जवाब विस्तृत किया, आशा है कि यह समझने में मदद करेगा कि इस संपत्ति का उपयोग कैसे करें।
कोशिश

@ Bolein95 क्या आप समर्थन पुस्तकालय का उपयोग कर रहे हैं? कृपया अधिक जानकारी प्रदान करने में आपकी सहायता करने में सक्षम होने के लिए।
१०

यह देखते हुए कि इस पैरामीटर को डिज़ाइन लाइब्रेरी के संस्करण 24 में पेश किया गया था। इसलिए यदि आप 23 संस्करण पर ग्रहण में फंस गए हैं (जैसे मैं कल तक इस्तेमाल किया था ...), तो आपके पास इसका उपयोग नहीं होगा।
फ्लोरियनट

@FloriantT सटीक के लिए धन्यवाद, मैंने आपकी टिप्पणी के संबंध में अपना जवाब अपडेट कर दिया है।
ट्रिप्पी

6

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";

आप एक प्रतिभाशाली हैं। +1
जैकब सैंचेज़

4

मैंने शीर्षक से पहले \ t का उपयोग किया और मेरे लिए काम किया।


2

मेरे शीर्षक लोगो के दाईं ओर डिफ़ॉल्ट शीर्षक पाठ के बजाय एक कस्टम छवि का उपयोग कर Im। यह प्रोग्राम की तरह सेट किया गया है

    actionBar.setDisplayHomeAsUpEnabled(true);
    actionBar.setDisplayUseLogoEnabled(true);
    actionBar.setCustomView(R.layout.include_ab_txt_logo);
    actionBar.setDisplayShowCustomEnabled(true);

मेरे लिए उपरोक्त उत्तरों के साथ मुद्दे @ क्लिफ़स का सुझाव मेरे लिए काम नहीं करता है क्योंकि उन मुद्दों के कारण जो दूसरों ने टिप्पणियों में उल्लिखित किए हैं और जबकि @dushyanth प्रोग्रामेटिक पैडिंग सेटिंग ने अतीत में काम किया हो सकता है, मुझे लगता है कि यह तथ्य है कि रिक्ति है अब android:layout_marginEnd="8dip"API 17 का उपयोग करके सेट करें मैन्युअल रूप से पैडिंग सेट करने का कोई प्रभाव नहीं होना चाहिए। अपनी वर्तमान स्थिति को सत्यापित करने के लिए उसने जो लिंक पोस्ट किया है, उसे देखें।

मेरे लिए एक सरल समाधान एक्शनबार में मेरे कस्टम दृश्य पर एक नकारात्मक मार्जिन सेट करना है, जैसे android:layout_marginLeft="-14dp"। एक त्वरित परीक्षण यह दर्शाता है कि यह मेरे लिए 2.3.3 और 4.3 का उपयोग कर काम करता हैActionBarCompat

आशा है कि यह किसी की मदद करता है!


@ गिरि अधिक जोड़ सकते हैं हम ऊपर, नीचे, बाएं, दाएं पर एक्शन बार बना सकते हैं
आमशर्मा

@amitsharma - मुझे यकीन नहीं है कि आप वास्तव में क्या मतलब है - क्या आप स्क्रीन के ऊपर से एक्शन बार को स्थानांतरित करने का मतलब है? अगर ऐसा है तो मुझे लगता है कि आपको ऐसा करने के लिए एक कस्टम एक्शन बार दृश्य बनाने की आवश्यकता होगी - ऐसा लगता है कि यह अच्छा नहीं हो सकता है, हालाँकि :)
डोरी

उस स्थिति में मैं नहीं जानता कि आपके द्वारा "यू का मतलब क्या है और क्या हम अधिक जोड़ सकते हैं हम ऊपर, नीचे, बाएं, दाएं पर एक्शन बार बना सकते हैं"
डोरी

2

मैंने कस्टम नेविगेशन लेआउट का उपयोग करके इस समस्या को हल किया

इसका उपयोग करके आप एक्शन बार में शीर्षक में कुछ भी अनुकूलित कर सकते हैं:

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"/>

0

मेरे पास एक समान मुद्दा था लेकिन एक्शन बार में अप और कस्टम ऐप आइकन / लोगो के बीच अंतर के साथ। प्रोग्रामिंग के लिए दुष्यंत के समाधान ने मेरे लिए काम किया (ऐप / लोगो आइकन पर पैडिंग सेट करना)। मैंने या तो android.R.id.home या R.id.abs__home ( ActionBarSherlock को खोजने की कोशिश की , क्योंकि यह बैकवर्ड कम्पैटिबिलिटी सुनिश्चित करता है), और यह 2.3-4.3 डिवाइसों पर काम कर रहा है जिन्हें मैंने टेस्ट किया है।


0

मेरे मामले के लिए, यह टूलबार के साथ था, मैंने इसे इस तरह हल किया:

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>

मेरे टुकड़े में, मैं एपीआई की जाँच करें:

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);

सौभाग्य!


0

आप इस तरह से अपने दराज के ड्रॉबल को बदल सकते हैं:

<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) में बदलाव करते हैं, तो आप साइडिंग और ड्राअरअरो आइकन स्केलिंग नहीं चुन सकते। लेकिन आप बाएं से मार्जिन कर सकते हैं। सही से हाशिये पर

findViewById(android.R.id.home).setPadding(10, 0, 5, 0);

0

मैंने इस विधि का उपयोग किया setContentInsetsAbsolute(int contentInsetLeft, int contentInsetRight)और यह काम करता है!

int padding = getResources().getDimensionPixelSize(R.dimen.toolbar_content_insets);
mToolbar.setContentInsetsAbsolute(padding, 0);

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)


0

मैंने इस्तेमाल किया 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>

मेरा जावा कोड:

findViewById(R.id.appbar).bringToFront();
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
final ActionBar ab = getSupportActionBar();
getSupportActionBar().setDisplayShowTitleEnabled(false);

0

आप विधि द्वारा भी इसे प्राप्त कर सकते हैं:

Drawable d = new InsetDrawable(getDrawable(R.drawable.nav_icon),0,0,10,0);
mToolbar.setLogo(d);

0

अपने 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

-2

यह मेरे लिए शीर्षक में पैडिंग जोड़ने के लिए काम करता है और ActionBarआइकन के लिए मैंने प्रोग्रामेटिक रूप से सेट किया है।

 getActionBar().setTitle(Html.fromHtml("<font color='#fffff'>&nbsp;&nbsp;&nbsp;Boat App </font>"));

-2
<string name="app_name">"    "Brick Industry</string>

बस " "अपने ऐप के नाम के लिए जोड़ें यह आइकन और शीर्षक के बीच स्थान जोड़ देगा


यह बुरा नहीं है, मुझे नहीं पता कि यह इतना कम क्यों हो गया
मार्टिन डी सिमोन

शायद कभी-कभी समाधान का सबसे सरल सबसे अच्छा है! धन्यवाद
नूमन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.