অ্যান্ড্রয়েডের অ্যাকশন বার থেকে আইকন / লোগো সরান


146

আমি অ্যাকশন বার থেকে আইকন / লোগো অপসারণের কিছু উপায় সন্ধান করার চেষ্টা করছি তবে এসও, অ্যান্ড্রয়েডের ডকুমেন্টেশন এবং গুগল অনুসন্ধানের এক ঘন্টা পরে আমি কেবলমাত্র খুঁজে পেয়েছি কীভাবে পুরো টাইটেল বারটি সরিয়ে ফেলা যায়। এটা আমি চাই না। কেবল শিরোনাম বার থেকে আইকন / লোগো সরাতে চাই।

কেউ কীভাবে এটি সম্পাদন করতে জানেন? সাধারণত আমি এক্সএমএলে এটি করতে চাই ।


1
আপনি কেবল অ্যাকশনবারের এপিআই গাইডটি পড়তে পারতেন। এটি গাইডে ঠিক বলেছেন।
এমগামেরজ

6
প্রতিটি তথ্যের টুকরো কোথাও খুঁজে পাওয়া যায়।
হ্রফান

আপনি কি আমাদের চেষ্টা করতে পারেন? আপনি কি আগে খুঁজে পেয়েছেন যে কাজ করে না?
ডিফোর্ড 42

@ ডিফোর্ক This২ এই প্রশ্নটি এখন আর প্রাসঙ্গিক নয় (প্রায় 4 বছর বয়সী)। নীচে উত্তরগুলিতে আপনি এটি অর্জনের প্রচুর উপায় খুঁজে পেতে পারেন।
হার্ফান

উত্তর:


58

আপনি যদি android:logo="..."নিজের <application>ট্যাগটিতে সংজ্ঞায়িত করেন AndroidManifest.xmlতবে আইকনটি আড়াল করতে আপনাকে এই জিনিসটি ব্যবহার করতে হবে:

প্রাক-v11 থিম

<item name="logo">@android:color/transparent</item>

v11 এবং আপ থিম

<item name="android:logo">@android:color/transparent</item>

এই দুটি স্টাইলের ব্যবহারটি আমার জন্য একটি 2.3 এবং একটি 4.4 ডিভাইসে অ্যাকশন বার আইকনটি সঠিকভাবে আড়াল করেছে (এই অ্যাপটি অ্যাপকম্প্যাট ব্যবহার করে )।


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

@ অ্যাক্রেসপো হুম আমি জানি আপনি কী সম্পর্কে কথা বলছেন তবে আমি তার জন্য কোনও সমাধান অনুসন্ধান করিনি, দুঃখিত।
চার্লস মাডেরে

1
আমি যা করে শেষ করেছি তা হ'ল <application (...) android:logo="@android:color/transparent"> (...)আমার মধ্যে সেট করা এবং আমার শৈলীতে AndroidManifest.xmlএটির useLogoজন্য জোর করে । এই শেষ অংশটি বেশ কয়েকটি ডিভাইসে যেমন গুরুত্বপূর্ণ ছিল (আমার মনে হয় বেশিরভাগ পোস্ট-ললিপপ) তিরস্কার করা অনুসন্ধান অনুসন্ধানটি অ্যাপিকনটি নিয়েছিল এবং লোগোটির জায়গায় রেখে দেয়, এমনকি লোগোটি স্বচ্ছ হিসাবে সেট করা displayOptions<item name="android:displayOptions">showHome|useLogo|homeAsUp|showTitle</item> <item name="displayOptions">showHome|useLogo|homeAsUp|showTitle</item>
থাকলেও

228

আপনার অ্যাকশন বার শৈলীতে নিম্নলিখিত কোড যুক্ত করুন:

<item name="android:displayOptions">showHome|homeAsUp|showTitle</item>
<item name="displayOptions">showHome|homeAsUp|showTitle</item>
<item name="android:icon">@android:color/transparent</item> <!-- This does the magic! -->

পিএস: আমি অ্যাকশনবার শার্লক ব্যবহার করছি এবং এটি ঠিক কাজ করে।


2
বেশ সুন্দর কৌশল, ধন্যবাদ! এমনকি অ্যাকশন বারে জায়গা নেওয়াও বন্ধ করে দেয়!
ইগোর Čordaš

6
ধন্যবাদ ..এটি কোডেও কাজ করেছে ... অ্যাকশনবার.সেটকন (android.R.color.transparent);
জগদীপ সিং

1
দুর্দান্ত উত্তর ... :)
বাইটকোড

24
কিছু স্যামসাং ডিভাইস @android:color/transparentBLACK হিসাবে প্রদর্শন করে । উন্মাদ বলে মনে হচ্ছে, তবে অনেক ডিভাইস প্রস্তুতকারক অ্যান্ড্রয়েডের ডিফল্ট সেটিংসকে ওভাররাইড করে; রঙ সহ এ কারণে, আমি এর মতো রং.এক্সএমএলে একটি রঙ তৈরি করব: <color name="transparent">#00000000</color>এবং অ্যান্ড্রয়েড থেকে মান পাওয়ার পরিবর্তে রেফারেন্স করব।
ম্যাট ডব্লিউ

1
@ জোসে_জিডি: অ্যান্ড্রয়েড: ডিসপ্লেঅপশনগুলি কেবলমাত্র v11 এবং আপ, তাই আপনার উভয়টি পিছনের দিকে সামঞ্জস্যপূর্ণ হওয়া দরকার।
নীলজার

115

আপনি যদি বিশেষ ক্রিয়াকলাপে আইকনটি না চান।

getActionBar().setIcon(
   new ColorDrawable(getResources().getColor(android.R.color.transparent)));    

45
। getActionBar () setIcon (android.R.color.transparent); যথেষ্ট বলে মনে হচ্ছে
ছেলে

কল পদ্ধতি getActionBar () .... এই সমস্যাটি আরও ভাল সমাধান করা (অ্যাকশন বার থেকে আইকন সরান) কারণ আপনি যদি নেভিগেশন বার এবং অ্যাকশন বার ব্যবহার করেন তবে আপনার অ্যাকশন বারটি নেভিগেশন বারের ওপরে হবে। যদি আপনি setDisplayShowHomeEn सक्षम (মিথ্যা) ব্যবহার করেন তবে নেভিগেশন বারটি অ্যাকশন বারের ওপরে যাবে এবং আপনি এটি চান না।
হোরকাভলনা

আমি ColorDrawable cd = new ColorDrawable(getResources().getColor(android.R.color.transparent)); cd.setBounds(0,0,0,0); getActionBar().setIcon(cd);
এটিতে

1
@ এডিস: এখনও অ্যাকশনবারের বাম দিকে ফাঁকা স্থান দেখায়। কোনও পরামর্শ?
রোয়ান

আপনি লোগো সেট না করে থাকলে এটি কাজ করে। আমার ক্ষেত্রে পদ্ধতির setLogoপরিবর্তে আমাকে ব্যবহার করতে হয়েছিল setIcon। তবুও, দুর্দান্ত টিপ, আমাকে সঠিক পথে পেয়েছে !!
লুইস্কোটা

49

এটি আমার পক্ষে কাজ করেছে

getActionBar().setDisplayShowHomeEnabled(false);

2
এটি অ্যাকশন বারটিকে ট্যাবস / নেভিগেশন বারের নীচে রাখে। স্পষ্টতই এই আচরণটি "ডিজাইনের মাধ্যমে" ... কোড. google.com/p/android/issues/detail?id=36191
রজার কিস

যাইহোক এই প্রশ্নের উত্তর দেয় না। আমি এই বৈশিষ্ট্যটি সম্পর্কে জানতাম, তবে আমি এক্সএমএল চেয়েছিলাম!
হাফন

এটির উত্তর হওয়া উচিত বলে মনে হচ্ছে - অন্যথায় আপনি একটি বিশ্বব্যাপী সমাধান প্রয়োগ করছেন, যা আমি সন্দেহ করি যা সবাই চায়। আমার ক্ষেত্রে, আমি কিছু পৃষ্ঠাগুলিতে লোগোটি দেখাতে চাই, তবে অন্যান্য পৃষ্ঠাগুলি এটির কোনও অর্থ দেয় না এবং অ্যাকশন বারটিকে ছড়িয়ে দেয়।
ডিস্কেডিভ

28

কল করা হচ্ছে

mActionBar.setDisplayHomeAsUpEnabled(true);

ছাড়াও,

mActionBar.setDisplayShowHomeEnabled(false);

লোগোটি লুকিয়ে রাখবে তবে হোম As আপ আইকনটি প্রদর্শন করবে। :)


যাইহোক এই প্রশ্নের উত্তর দেয় না। আমি এই বৈশিষ্ট্যটি সম্পর্কে জানতাম, তবে আমি এক্সএমএল চেয়েছিলাম!
হাফন

@ হাফফান - আমি ভেবেছিলাম এক্সএমএল কেবলমাত্র উত্তর নয় পছন্দসই উত্তর। :( আমি তার মানুষ এখনো সাহায্য অনুমান :)।
অতুল হে Holíc

15

সচেতন থেকো:

<item name="android:icon">@android:color/transparent</item>

আপনার বিকল্পগুলির আইটেমগুলিও স্বচ্ছ করে তুলবে।


13
    //disable application icon from ActionBar
    getActionBar().setDisplayShowHomeEnabled(false);

    //disable application name from ActionBar
    getActionBar().setDisplayShowTitleEnabled(false);

যাইহোক এই প্রশ্নের উত্তর দেয় না। আমি এই বৈশিষ্ট্যটি সম্পর্কে জানতাম, তবে আমি এক্সএমএল চেয়েছিলাম!
হাফন

12
getActionBar().setIcon(android.R.color.transparent);

এটি আমার পক্ষে কাজ করেছে।


11

শিরোনামটি সরিয়ে বা দেখিয়ে ব্যবহার করুন:

getActionBar().setDisplayShowTitleEnabled(true);

লোগো ব্যবহার করে সরান বা দেখান:

getActionBar().setDisplayUseLogoEnabled(false);

সব মুছে ফেলুন:

getActionBar().setDisplayShowHomeEnabled(false);

যাইহোক এই প্রশ্নের উত্তর দেয় না। আমি এই বৈশিষ্ট্যটি সম্পর্কে জানতাম, তবে আমি এক্সএমএল চেয়েছিলাম!
হেরফান

9

আপনি অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল এর নীচে কোড যুক্ত করতে পারেন ।

android:icon="@android:color/transparent"

এটা ঠিক কাজ করবে।

তবে আমি দেখতে পেয়েছি যে লঞ্চারের আইকনটিও স্বচ্ছ হয়ে ওঠায় এটি একটি সমস্যা দেয়।

সুতরাং আমি ব্যবহার করেছি:

getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));

এবং এটা ভাল কাজ করে।

তবে যদি আপনার একাধিক কার্যকলাপ থাকে এবং কোনও ক্রিয়াকলাপের আইকনটি স্বচ্ছ করতে চান তবে পূর্বের পদ্ধতির কাজ হবে approach


2

আমি এটি ব্যবহার করেছি এবং এটি আমার পক্ষে কাজ করেছে।

        getActionBar().setIcon(
        new ColorDrawable(getResources().getColor(android.R.color.transparent)));

যাইহোক এই প্রশ্নের উত্তর দেয় না। আমি এই বৈশিষ্ট্যটি সম্পর্কে জানতাম, তবে আমি এক্সএমএল চেয়েছিলাম!
হেরফান

2
getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));
getActionBar().setDisplayHomeAsUpEnabled(true);

স্ট্যাক ওভারফ্লোতে স্বাগতম! সাধারণত আপনার মত উত্তরগুলি বরং নিম্ন মানের হিসাবে বিবেচিত হয়। ভবিষ্যতের রেফারেন্সের জন্য আপনার প্রদত্ত কোড সম্পর্কে কিছু ব্যাখ্যা যুক্ত করার কথা বিবেচনা করা উচিত এবং আপনার কোডটি আরও ভাল গঠন করা উচিত (প্রতিটি লাইনের শুরুতে 4 টি স্পেস যুক্ত করুন, বা এটি সমস্ত নির্বাচন করুন এবং পাঠ্য বাক্সের উপরে}} চিহ্নটি ক্লিক করুন Also এছাড়াও, আপনার প্রশ্নের তারিখ (এক বছর আগে) এবং এটি ইতিমধ্যে উত্তর দেওয়া হয়েছে (গ্রিন চেক সাইন) সম্পর্কে আপনার আরও মনোযোগ দেওয়া উচিত। আপনার প্রোগ্রামিং এর জন্য শুভ কামনা :)
Hristo Valkanov

যাইহোক এই প্রশ্নের উত্তর দেয় না। আমি এই বৈশিষ্ট্যটি সম্পর্কে জানতাম, তবে আমি এক্সএমএল চেয়েছিলাম!
হেরফান

1

আমি মনে করি সঠিক উত্তরটি: এপিআই 11 বা ততোধিকের জন্য:

getActionBar().setDisplayShowHomeEnabled(false);

অন্যথায়:

getSupportActionBar().setDisplayShowHomeEnabled(false);

(কারণ এটি একটি সমর্থন গ্রন্থাগার প্রয়োজন।)


যাইহোক এই প্রশ্নের উত্তর দেয় না। আমি এই বৈশিষ্ট্যটি সম্পর্কে জানতাম, তবে আমি এক্সএমএল চেয়েছিলাম!
হাফন


0

কিউকি আবাজিজের উত্তর ঠিক আছে, তবে আমি এটি দীর্ঘকাল ধরে লড়াই করেছি যাতে এটি সামঞ্জস্যতা প্যাকের সাথে কাজ করতে এবং সঠিক উপাদানগুলিতে শৈলীটি প্রয়োগ করতে পারে। এছাড়াও, স্বচ্ছতা-হ্যাক অযৌক্তিক। সুতরাং এখানে ভি 8 এবং এর জন্য কাজ করার একটি সম্পূর্ণ উদাহরণ রয়েছে:

মান \ styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyActivityTheme" parent="@style/Theme.AppCompat">
        <item name="actionBarStyle">@style/NoLogoActionBar</item> <!-- pre-v11-compatibility -->
        <item name="android:actionBarStyle">@style/NoLogoActionBar</item>
    </style>
    <style name="NoLogoActionBar" parent="@style/Widget.AppCompat.ActionBar">
        <item name="displayOptions">showHome</item> <!-- pre-v11-compatibility -->
        <item name="android:displayOptions">showHome</item>
    </style>
</resources>

AndroidManifest.xML (শেল)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">   
    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19"/>
    <application android:theme="@android:style/Theme.Light.NoTitleBar">
        <activity android:theme="@style/PentActivityTheme"/>
    </application>
</manifest>

0

আপনার ম্যানিফেস্টে যান এবং আপনার কার্যকলাপটি সন্ধান করুন তারপরে এই কোডটি যুক্ত করুন:

android:theme="@android:style/Theme.NoTitleBar"

উপরে লাইন আপনার লুকান Actionbar

আপনার যদি অন্য বৈশিষ্ট্যের প্রয়োজন হয় তবে আপনি (সিএলআর + এসপিসি) সহ অন্যান্য বিকল্প দেখতে পাবেন।


0

দ্রুততম উপায় হ'ল আপনার ম্যানিফেস্ট.এক্সএমএল সংশোধন করা। উদাহরণস্বরূপ আপনি যদি ক্রিয়াকলাপের "ক্রিয়াকলাপ" এর লোগোটি সরাতে এবং অন্যান্য ক্রিয়াকলাপে লোগোটি ছেড়ে দিতে চান তবে আপনি নিম্নলিখিতটি করতে পারেন:

<activity
      android:name=".home.XActivity"
      android:logo="@android:color/transparent"
      android:configChanges="orientation|keyboardHidden" />
 <activity
      android:name=".home.HomeActivity"
      android:configChanges="orientation|keyboardHidden" />

0

উপরের কোনটিই কাজ করেনি।

তবে এটি কৌশলটি করেছে:

override fun onCreate() {
    setContentView(R.layout.activity_main)

    setSupportActionBar(toolbar)
    toolbar.logo = null

(সরঞ্জামদণ্ড থেকে আইকন সরানো)

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