অ্যাকশনবারের হোম আইকন এবং শিরোনামের মধ্যে প্যাডিং


110

অ্যাকশনবারের হোম আইকন এবং শিরোনামের মধ্যে কীভাবে প্যাডিং সেট করবেন কেউ জানেন?


13
হ্যাকের জগতে আপনাকে স্বাগতম: অ্যান্ড্রয়েড । আমাদের অন্যান্য ইউআই টেকস এবং অ্যাপ্লিকেশন প্রোগ্রামিংয়ে যদি আমাদের এটির প্রয়োজন হয় তবে এই সাধারণ জিনিসটি যে কেউ (এমনকি একজন নবজাতক) দ্বারা খুঁজে পাওয়া উচিত ছিল। তবে অ্যান্ড্রয়েডে এটি সত্যই রহস্যজনক। তারা ইচ্ছাকৃতভাবে বৈশিষ্ট্যটি গোপন করে, এটিকে জটিল করে তোলে এবং কেবল অ্যান্ড্রয়েডকে হ্যাকের জগতে পরিণত করে । আমি জানি না তাদের চূড়ান্ত উদ্দেশ্য কী।
কিং কিং

1
এই প্রশ্ন ও উত্তর টুলবার (সমর্থন v7) ভিতরে বৈশিষ্ট্যাবলী সঙ্গে এই অর্জন করার উপায় দিতে
এলিজাবেথ

অ্যান্ড্রয়েড আইওএসের চেয়েও বেশি চুষে ফেলে।
বোরঝ

উত্তর:


69

আমি ক্লিফাসের উত্তরটি অভিযোজিত করেছি এবং আমার অ্যাকশনবারের শৈলীর সংজ্ঞায় লোগো-অঙ্কনকে নির্ধারণ করেছি, উদাহরণস্বরূপ রেজ / স্টাইল.এক্সএমএলে:

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

অঙ্কনযোগ্য দেখতে দেখতে ক্লিফাসের মতো (এখানে ডিফল্ট অ্যাপ্লিকেশন লঞ্চার আইকনটি সহ) পুনরায় / অঙ্কনযোগ্য / অ্যাকশনবার_স্পেস_বেটুইন_ইকন_আন্দ_শিরোনাম.এক্সএমএল:

<?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 এ আপনি এখনও আলাদা অ্যাপ আইকন সেট করতে পারেন ('ডেস্কটপে' লঞ্চ আইকন here


এটি অ্যান্ড্রয়েড 5.1 এ কেন প্রভাব ফেলবে না
লোগান গুও

দুঃখিত, আমি 5.1 এ সম্পর্কে কিছু বলতে পারি না। আমি আরও নমনীয় সরঞ্জামদণ্ড-নিয়ন্ত্রণে স্যুইচ করেছি। যদি ইতিমধ্যে সম্পন্ন না হয়ে থাকে, তবে আমি স্ট্যাক ওভারফ্লোতে এখানে একটি নতুন প্রশ্ন খোলার এবং আরও কিছু বিশদ লেখার পরামর্শ দিচ্ছি, আপনার জন্য কী কাজ করেছে (<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
এই সমাধানটি নিয়ে এখানে একটি বড় সমস্যা রয়েছে। আমি এটি ব্যবহার করেছি এবং @ আলেস্কুই ঠিক বলেছেন - অ্যাপ্লিকেশন আইকনটি পরিবর্তিত হয়ে ছোট হয়ে গেছে ... আপনি আইকনটি পরিবর্তন করতে পারেন তবে যেহেতু ডিপি বিভিন্ন ফোনের জন্য আলাদা তবে এই সমাধানটি এটি কোনও প্রোডাকশন অ্যাপ্লিকেশনটিতে কাটবে না।
জোহান এস

3
নিশ্চিত করুন যে আপনি এই অঙ্কনটি আপনার অ্যাপ্লিকেশন আইকন হিসাবে নয়, লোগো হিসাবে সেট করছেন। শুভকামনা!
ক্লিফাস

1
আমি বিকৃতিও দেখছি। আমি যদি উপরে যেমন ডান প্যাডিং প্রয়োগ করি তবে চিত্রের ডান হাতটি ক্রপ করা আছে।
নীল

1
আকর্ষণীয় সমাধান তবে আমার পক্ষে কাজ করে না - আমি হয় এইভাবে অতিরিক্ত প্যাডিং যুক্ত করতে পারি বা লোগো চিত্রটি
কাটাতে পারি

1
ক্লিফাস - দুর্দান্ত সমাধান আমার প্রয়োজনীয়তাটি ছিল লোগোটিকে বাম দিকে নিয়ে যাওয়া যাতে আমি ব্যবহার করেছি: অ্যান্ড্রয়েড: বাম = "- 4 ডিপি"।
থারকানাर्मানা

55

আমি একই ধরণের সমস্যার মুখোমুখি হয়েছিলাম, আমার ক্ষেত্রে বিষয়বস্তুর উপর নির্ভর করে প্রতিটি ক্রিয়াকলাপে আমাকে গতিশীলভাবে শিরোনাম সেট করতে হয়েছিল।

সুতরাং এটি আমার জন্য কাজ করে।

actionBar.setTitle("  " + yourActivityTitle);

যদি আপনি চান সমস্ত ব্যবধান হয় তবে আমি এটি ভাবতে পারি সবচেয়ে সহজ সমাধান।


13
কেন ডাউন ভোট? এটি একটি ভুল উত্তর, এটি করার এক অন্য উপায় হিসাবে গণ্য করবেন না।
রাহুল সায়ানী

3
@idratherbeintheair হ্যাঁ আমি সম্মতি জানাই এটি "পরিষ্কার" উপায় নয় তাই এখন এটি কেবল সহজতম বলে। তবে আপনি যখন কোনও বিষয় নির্দেশ করেন, দয়া করে বিকল্প সমাধান পোস্ট করুন। আমি এই সমস্যার মুখোমুখি হয়েছি এবং এটি আমি আমার অ্যাপ্লিকেশনটিতে ব্যবহার করেছি তাই আমি ভাগ করে নিই।
রাহুল সায়ানী

3
সত্যি? এই সমাধানটি বিভিন্ন ডিপিআই সহ বিভিন্ন স্ক্রিনে একই কাজ করতে পারে না।
রোমান বুগায়ান

5
আমি এই সমাধানটি বেছে নেব না কারণ আমার অ্যাপ্লিকেশনটিতে আমার আরও স্থিতিশীল প্রয়োজন, তবে আমি এই সমস্ত লোককে "এটি পরিষ্কার নয়" বলে জিজ্ঞাসা করতে চাই। ওহ, আমার, Godশ্বর, এই সমস্যার পরিষ্কার সমাধান কোথায়? লোগোগুলি সহ সমস্ত হ্যাক, সেটপ্যাডিং আমার কাছেও পরিষ্কার দেখায় না! কেবল মন্তব্যগুলি পড়ুন, এগুলি নিয়েও কত লোকের সমস্যা রয়েছে। অ্যান্ড্রয়েড সেট করা হচ্ছে: শিরোনামে প্যাডিং লেফট - এটি যদি কাজ করে তবে পরিষ্কার হবে কি। হ্যাক উদ্ভাবনের জন্য আমরা এখানে অন্ধকারে রেখেছি কারণ কিছু কারণে এটি যেভাবে কাজ করা উচিত ছিল তেমনভাবে কাজ করে না। সুতরাং কিছুই "পরিষ্কার নয়"।
ভারভারা কালিনিনা

1
একটি ক্লিনার সমাধান app:titleMarginStartহ'ল এক্সএমএল লেআউটে বৈশিষ্ট্যটি ব্যবহার করা ।
LarsH

40

এইভাবে আমি হোম আইকন এবং শিরোনামের মধ্যে প্যাডিং সেট করতে সক্ষম হয়েছি।

ImageView view = (ImageView)findViewById(android.R.id.home);
view.setPadding(left, top, right, bottom);

যদিও অ্যাকশনবারের এক্সএমএল শৈলীর মাধ্যমে এটি কাস্টমাইজ করার কোনও উপায় আমি পাইনি। এটি, নিম্নলিখিত 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>

তবে আপনি যদি এক্সএমএল এর মাধ্যমে এটি অর্জন করতে চাইছেন তবে এই দুটি লিঙ্ক আপনাকে সমাধান পেতে সহায়তা করতে পারে:

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


1
@ দুশায়ানথ আমি কেবল চেষ্টা করেছি তবে চিত্র দর্শনে নাল পয়েন্টার ব্যতিক্রম বলেছি। অ্যাকশন বারে আমার উভয় হোমআপপিস্টিক এবং হোম আইকন রয়েছে।
কৃষ্ণ শ্রেষ্ঠ

1
এটি কেবলমাত্র এডিআই> = ১১ এর জন্য অ্যান্ড্রয়েড হিসাবে কাজ করছে। কিভাবে এটি পরিচালনা করবেন?
টোবিয়াস

কিছুটা হ্যাক। ক্লিয়ারের সমাধানের জন্য নীচে ক্লিফাসের উত্তরটি দেখুন।
dhaag23

বাড়ির স্পেসিংটি আর ব্যবহার করে সেট করা নেই padding, এটি marginEndএপিআই 17 থেকে ব্যবহার করা হবে বলে মনে হচ্ছে - যা সম্ভবত এই সমাধানটি ভেঙে দেবে। আমার নীচে দেখুন
ডরি

@ টোবিয়াস আর.আইডি.হোম সেখানে সর্বত্রই রয়েছে, এমনকি মাত্র ১১ এর স্তর আগেও এটি উপলব্ধ নেই
অস্কার্থেকেট

32

এটি মেটেরিয়াল ডিজাইনের একটি সাধারণ প্রশ্ন কারণ আপনি নীচের অংশে থাকা সামগ্রীর সাথে আপনার সরঞ্জামদণ্ডের শিরোনামটি লাইন করতে পারেন। এটি করতে, আপনি "12dp" এর ডিফল্ট প্যাডিংটিকে "12dp" বৈশিষ্ট্যযুক্ত সামগ্রীটি ব্যবহার করে ইনসেট স্টার্ট = "72dp" ওভাররাইড করতে পারেন নীচে দেখানো হিসাবে আপনার

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
গ্রেট। এটি কোথায় রাখবেন তা স্পষ্ট করে যদি আপনি নমুনা সম্পর্কিত এক্সএমএল সরবরাহ করতে পারেন তবে এটি আরও ভাল। (এই লাইনটি কোথায় রাখবেন তা আমি জানি)
জন প্যাং

হ্যালো @ জনপ্যাং, উপরের মত আপনি এটি আপনার লেআউটটির সরঞ্জামদণ্ডে রাখতে পারেন।
অজিত

29

আপনি যদি অ্যাপকোম্প্যাট (android.support.v7.widget.Toolbar,> = পুনর্বিবেচনা 24, জুন 2016) থেকে সরঞ্জামদণ্ড ব্যবহার করছেন, তবে আইকন এবং শিরোনামের মধ্যে প্যাডিংটি নিম্নোক্ত মান সহ পরিবর্তন করা যেতে পারে:

  app:contentInsetStartWithNavigation="0dp"

আমার উত্তরটি উন্নত করতে আপনি এটি সরাসরি আপনার ক্রিয়াকলাপের মধ্যে আপনার সরঞ্জামদণ্ডে ব্যবহার করতে পারেন বা আপনার সরঞ্জামদণ্ডের জন্য একটি নতুন লেআউট ফাইল তৈরি করতে পারেন। এক্ষেত্রে আপনাকে প্রতিটি সরঞ্জামদণ্ডের প্রতিটি প্রয়োজনীয় ভিউতে সম্পত্তি অন্তর্ভুক্ত করে আপনার সরঞ্জামদণ্ডের @ আইডি আমদানি করতে হবে।

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

তারপরে আপনি আপনার ক্রিয়াকলাপ.এমএমএলে আপনার বিন্যাসটি আমদানি করতে পারেন

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

গ্রেট। এটি কোথায় রাখবেন তা স্পষ্ট করে যদি আপনি নমুনা সম্পর্কিত এক্সএমএল সরবরাহ করতে পারেন তবে এটি আরও ভাল। (এই লাইনটি কোথায় রাখবেন তা আমি জানি)
জন প্যাং

@ জনপ্যাং আমি আমার উত্তরটি বিস্তারিত জানিয়েছি, আশা করি এটি আপনাকে এই সম্পত্তি কীভাবে ব্যবহার করবেন তা বুঝতে সহায়তা করবে।
tryp

@ Bolein95 আপনি কি সমর্থন লাইব্রেরিটি uisng করছেন? আপনি আরও তথ্য সরবরাহ করতে সাহায্য করতে সক্ষম হতে।
ট্রাইপ

এই পরামিতিটি ডিজাইনের গ্রন্থাগারের 24 সংস্করণে প্রবর্তিত হয়েছিল তা লক্ষণীয়। সুতরাং আপনি যদি ২৩ সংস্করণে (যেমন আমি গতকাল পর্যন্ত অভ্যস্ত ...) গ্রহণে আটকে থাকি তবে আপনার এতে অ্যাক্সেস থাকবে না।
ফ্লোরিয়ানটি

@ ফ্লোরিয়েন্টটি নির্ভুলতার জন্য আপনাকে ধন্যবাদ, আমি আপনার মন্তব্য সম্পর্কে আমার উত্তর আপডেট করেছি।
tryp

6

ব্যবহার titleMarginStartআমার জন্য কাজ করে। জামারিন উদাহরণ:

<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

আমি শিরোনামের আগে used t ব্যবহার করেছিলাম এবং আমার পক্ষে কাজ করেছি।


2

আমি আমার অ্যাপ্লিকেশন লোগোর ডানদিকে ডিফল্ট শিরোনাম পাঠ্যের পরিবর্তে একটি কাস্টম চিত্র ব্যবহার করছি। এটি অগ্রগতির মতো সেট আপ করা হয়েছে

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

আমার জন্য উপরের উত্তরগুলির সাথে সম্পর্কিত সমস্যাগুলি হ'ল @ ক্লিফসের পরামর্শটি আমার পক্ষে কাজ করে না কারণ অন্যরা মন্তব্যগুলিতে মন্তব্য করেছেন এবং @ দুশায়ানথ প্রগ্রেমেটিক প্যাডিং সেটিং অতীতে কাজ করতে পারে বলে আমি মনে করব যে ব্যবধানটি সত্য এখন ব্যবহার করে সেট করুন android:layout_marginEnd="8dip" এডিআই 17 ম্যানুয়ালি প্যাডিং সেট করার কোনও প্রভাব নেই। তার বর্তমান অবস্থা যাচাই করতে তিনি গিটে পোস্ট করেছেন সেই লিঙ্কটি দেখুন।

আমার জন্য একটি সহজ সমাধান তাই মত actionBar আমার কাস্টম ভিউ উপর নেতিবাচক মার্জিন সেট করতে হয় android:layout_marginLeft="-14dp"। একটি দ্রুত পরীক্ষা দেখায় যে এটি আমার জন্য ২.৩.৩ এবং ৪.৩ ব্যবহার করে কাজ করেActionBarCompat

আশা করি এটি কাউকে সাহায্য করবে!


@ দিরী আপনি কি আরও যুক্ত করতে পারেন আমরা উপরে, নীচে, বাম, ডানদিকে অ্যাকশন বার তৈরি করতে পারি
অমিতসর্মা

@ মিতশর্মা - আপনার ঠিক কী বোঝা যাচ্ছে তা নিশ্চিত নন - আপনি কী পর্দার শীর্ষ থেকে অ্যাকশন বারটি সরানোর অর্থ? যদি আমি মনে করি এটি করার জন্য আপনার একটি কাস্টম অ্যাকশন বারের ভিউ তৈরি করা দরকার - এটির মতো শোনা যাচ্ছে তবে তা ভাল লাগবে না :)
ডরি

সেক্ষেত্রে আমি আপনার অর্থ কী তা জানি না "আপনি কি আরও যুক্ত করতে পারেন আমরা উপরে, নীচে, বাম দিকে, ডানদিকে অ্যাকশন বার তৈরি করতে পারি"
ডরি

2

আমি কাস্টম নেভিগেশন লেআউটটি ব্যবহার করে এই সমস্যাটি সমাধান করেছি

এটি ব্যবহার করে আপনি শিরোনামে অ্যাকশন বারে যে কোনও কিছুই কাস্টমাইজ করতে পারেন:

build.gradle

dependencies {
    compile 'com.android.support:appcompat-v7:21.0.+'
    ...
}

Andro আইডি

<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 ( কেবল অ্যাকশনবারারলক , এটি পিছনের সামঞ্জস্যকে নিশ্চিত করে) সন্ধান করার চেষ্টা করেছি এবং দেখে মনে হচ্ছে যে আমি পরীক্ষিত ২.৩-৪.৩ ডিভাইস জুড়ে কাজ করেছি।


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>

এটি সঠিক উত্তর নয়, কারণ আপনি যখন পরিবর্তনযোগ্য সাইজ (অঙ্কনযোগ্য আকার = প্রস্থ = উচ্চতা) পরিবর্তন করবেন তখন প্যাডিং সাইড এবং ড্রয়ার অ্যারো আইকন স্কেলিং নির্বাচন করতে পারবেন না। তবে আপনি বাম থেকে মার্জিন করতে পারেন। ডান থেকে মার্জিন করতে

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

আপনার এক্সএমএলে, 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>

" "আপনার অ্যাপ্লিকেশন নামের জন্য কেবল যুক্ত করুন এটি আইকন এবং শিরোনামের মধ্যে স্থান যুক্ত করবে


এটি খারাপ নয়, আমি জানি না কেন এটি এত নিম্নচাপে পরিণত হয়েছিল
মার্টিন ডি সিমোন

কখনও কখনও সমাধানের সবচেয়ে সহজ সেরা! ধন্যবাদ
নুহমান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.