অ্যাকশনবারের হোম আইকন এবং শিরোনামের মধ্যে কীভাবে প্যাডিং সেট করবেন কেউ জানেন?
অ্যাকশনবারের হোম আইকন এবং শিরোনামের মধ্যে কীভাবে প্যাডিং সেট করবেন কেউ জানেন?
উত্তর:
আমি ক্লিফাসের উত্তরটি অভিযোজিত করেছি এবং আমার অ্যাকশনবারের শৈলীর সংজ্ঞায় লোগো-অঙ্কনকে নির্ধারণ করেছি, উদাহরণস্বরূপ রেজ / স্টাইল.এক্সএমএলে:
<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
সম্পাদনা : নিশ্চিত করুন যে আপনি এই অঙ্কনটি লোগো হিসাবে সেট করেছেন , আপনার অ্যাপ আইকন হিসাবে কিছু মন্তব্যকারীদের মতো করেন নি।
কেবলমাত্র একটি এক্সএমএল অঙ্কনযোগ্য তৈরি করুন এবং এটিকে রিসোর্স ফোল্ডারে "অঙ্কনযোগ্য" (কোনও ঘনত্ব বা অন্যান্য কনফিগারেশন ছাড়াই) রাখুন।
<?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.setTitle(" " + yourActivityTitle);
যদি আপনি চান সমস্ত ব্যবধান হয় তবে আমি এটি ভাবতে পারি সবচেয়ে সহজ সমাধান।
app:titleMarginStart
হ'ল এক্সএমএল লেআউটে বৈশিষ্ট্যটি ব্যবহার করা ।
এইভাবে আমি হোম আইকন এবং শিরোনামের মধ্যে প্যাডিং সেট করতে সক্ষম হয়েছি।
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
padding
, এটি marginEnd
এপিআই 17 থেকে ব্যবহার করা হবে বলে মনে হচ্ছে - যা সম্ভবত এই সমাধানটি ভেঙে দেবে। আমার নীচে দেখুন
এটি মেটেরিয়াল ডিজাইনের একটি সাধারণ প্রশ্ন কারণ আপনি নীচের অংশে থাকা সামগ্রীর সাথে আপনার সরঞ্জামদণ্ডের শিরোনামটি লাইন করতে পারেন। এটি করতে, আপনি "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");
এবং আপনি এটি দিয়ে শেষ:
app:titleMarginStart="dimension"
সরাসরি শিরোনাম লক্ষ্য।
contentInsetStart
হোম আইকন এবং শিরোনামের মধ্যে স্থান রাখে, উত্তরটি কমপক্ষে এটি বলতে পারে। আমার পরীক্ষাটি এখনই contentInsetStart
মনে হয়েছিল যে লোগোটির আগে জায়গাটি রেখে দেওয়া হবে (যা স্বীকৃতভাবে হোম আইকনের মতো নয়)।
আমার জন্য কেবল নীচের সংমিশ্রণটি কাজ করেছে, 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>
আপনি যদি অ্যাপকোম্প্যাট (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"/>
ব্যবহার 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";
আমি আমার অ্যাপ্লিকেশন লোগোর ডানদিকে ডিফল্ট শিরোনাম পাঠ্যের পরিবর্তে একটি কাস্টম চিত্র ব্যবহার করছি। এটি অগ্রগতির মতো সেট আপ করা হয়েছে
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
আশা করি এটি কাউকে সাহায্য করবে!
আমি কাস্টম নেভিগেশন লেআউটটি ব্যবহার করে এই সমস্যাটি সমাধান করেছি
এটি ব্যবহার করে আপনি শিরোনামে অ্যাকশন বারে যে কোনও কিছুই কাস্টমাইজ করতে পারেন:
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"/>
আমার একই ধরণের সমস্যা ছিল তবে অ্যাকশন বারে আপ এবং কাস্টম অ্যাপ্লিকেশন আইকন / লোগোটির মধ্যে ব্যবধান রয়েছে। দুশ্যন্তের প্যাডিং সেট করার সমাধানটি আমার জন্য প্রোগ্রামিংয়ে কাজ করেছে (অ্যাপ / লোগো আইকনে প্যাডিং সেট করে)। আমি android.R.id.home বা R.id.abs__home ( কেবল অ্যাকশনবারারলক , এটি পিছনের সামঞ্জস্যকে নিশ্চিত করে) সন্ধান করার চেষ্টা করেছি এবং দেখে মনে হচ্ছে যে আমি পরীক্ষিত ২.৩-৪.৩ ডিভাইস জুড়ে কাজ করেছি।
আমার ক্ষেত্রে, এটি টুলবারের সাহায্যে আমি এটিকে সমাধান করেছি:
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);
শুভকামনা!
আপনি আপনার ড্রয়ার অ্যারোর অঙ্কনীয় আকারটি এটি পরিবর্তন করতে পারেন:
<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);
আমি এই পদ্ধতিটি ব্যবহার করেছি 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
এবং কাস্টম 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);
আপনি পদ্ধতি দ্বারা একই অর্জন করতে পারেন:
Drawable d = new InsetDrawable(getDrawable(R.drawable.nav_icon),0,0,10,0);
mToolbar.setLogo(d);
আপনার এক্সএমএলে, 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>
" "
আপনার অ্যাপ্লিকেশন নামের জন্য কেবল যুক্ত করুন এটি আইকন এবং শিরোনামের মধ্যে স্থান যুক্ত করবে