অ্যাকশন বারে ওভারফ্লো আইকন পরিবর্তন করা


111

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


@ শিরীশ হেরওয়াদে: সেই লিঙ্কটি এখন মারা গেছে।
আল লেলোপাথ

উত্তর:


255

আপনি একটি স্টাইল দিয়ে করতে পারেন, তবে আপনাকে এটি মূল থিম ঘোষণার সাথে যুক্ত করতে হবে।

<resources>
    <!-- Base application theme. -->
    <style name="Your.Theme" parent="@android:style/Theme.Holo">
        <!-- Pointer to Overflow style ***MUST*** go here or it will not work -->
        <item name="android:actionOverflowButtonStyle">@style/OverFlow</item>
    </style>

    <!-- Styles -->
    <style name="OverFlow" parent="@android:style/Widget.Holo.ActionButton.Overflow">
        <item name="android:src">@drawable/ic_action_overflow</item>
    </style>

</resources>

আপনি এটিকে পরিবর্তনশীলও পরিবর্তন করতে পারেন, যা আমি এখানে বিস্তারিতভাবে যাচ্ছি:

প্রোগ্রামেটিকভাবে অ্যান্ড্রয়েড ওভারফ্লো মেনু আইকন পরিবর্তন করা


1
উত্স কোডটি অনুসন্ধান করে আমি ইতিমধ্যে এই সমাধানটি পেয়েছি, তবে ধন্যবাদ :) এটি একটি ভাল উত্তর।
প্যাঞ্জাইজ করুন

6
নোট করুন যে এটি থিমটিতে প্রয়োগ করা হয়, স্টাইল নয়। আমি বুঝতে না পারলে কিছুক্ষণ আটকে ছিলাম। Thx @aneal
রিচার্ড লে

5
এটি অ্যান্ড্রয়েড 3.0 (এপিআই 11) চলমান ট্যাবলেটগুলিতে ক্রাশ হবে, কারণ এটি "অ্যান্ড্রয়েড: অ্যাকশনওভারফ্লো বাটনস্টাইল" (সম্ভবত প্ল্যাটফর্ম বাগ) শৈলীর সংজ্ঞা দেওয়া লোক পছন্দ করে না। সুতরাং আপনাকে মানগুলি-ভি 11 / স্টাইলস.এক্সএমএল এবং মান-ভি 15 / স্টাইল.এক্সএমএল বিভিন্ন স্টাইল ব্যবহার করতে হবে।
মিস্টার-আইডিই

10
আর ActionBarSherlock ব্যবহারকারীদের জন্য, পিতা বা মাতা শৈলী হল:parent="Widget.Sherlock.ActionButton.Overflow"
নিক হোয়াইট

7
অ্যাপক্যাম্প্যাট (v21 ললিপপ যাইহোক) এর parent="@style/Widget.AppCompat.ActionButton.Overflow"জন্য, আমার পক্ষে কাজ করে বলে মনে হচ্ছে।
উত্তেজনাপূর্ণ

16

যারা এটি কাজ করতে পারেন না তাদের জন্য "অ্যান্ড্রয়েড:" নামস্থান ছাড়াই এই চেষ্টা করুন।

<item name="actionOverflowButtonStyle">@style/OverFlow</item>

সাথীদের ধন্যবাদ, এটি সত্যিই সাহায্য করেছে। কেউ এর জন্য ব্যাখ্যা পেয়েছে?
দামাচক

4
@ ড্যামাচাক আপনি যদি অ্যাপকম্প্যাট ব্যবহার করছেন তবে "অ্যান্ড্রয়েড:" নাম স্থানটি অন্তর্ভুক্ত করবেন না।
মাটিয়াশ

4
  1. আপনার কাস্টম ওভারফ্লো আইকনটি স্টাইল.এক্সএমএল এ অ্যাকশনবারে পরিবর্তন করুন।

     <resources>
        <!-- Base application theme. -->
        <style name=“MyTheme" parent="@android:style/Theme.Holo">
           <!-- Pointer to Overflow style DONT forget! -->
           <item name="android:actionOverflowButtonStyle">@style/MyOverFlow</item>
        </style>
    
        <!-- Styles -->
        <style name="MyOverFlow" parent="@android:style/Widget.Holo.ActionButton.Overflow">
            <item name="android:src">@drawable/ic_your_action_overflow</item>
        </style>
     </resources>
  2. AndroidManLive.xML এর অ্যাপ্লিকেশন ট্যাগে কাস্টম থিম "মাই থিম" রাখুন

    <application
        android:name="com.example.android.MainApp"
        android:theme="@style/AppTheme">
    </application>

আনন্দ কর.@.@


4

আমি যা করার চেষ্টা করেছি তা বিবেচনা না styles.xmlকরেই সমাধানগুলির কোনওটিই আমার পক্ষে কার্যকর হয়নি। শেষ পর্যন্ত, আপনার যদি অ্যাপকম্প্যাট 23+ থাকে, যা আপনার উচিত উচিত, এটি আসল উপায় যা আসলে কাজ করে:

toolbar.setOverflowIcon(drawable);

আমি খুঁজে পেয়েছি যে সবচেয়ে সঠিক উপায়!
শুভম্যাকজ

1

@ অ্যাডিনালের উত্তরটি সঠিক (সুতরাং এটির সম্প্রসারণের জন্য এটি কেবল একটি সম্প্রদায়ের উইকির ব্যাখ্যা)।

একটি মন্তব্যে পরামর্শ দেওয়া হয়েছে যে এটি কীভাবে করবেন সে সম্পর্কে ভুল বোঝাবুঝি হতে পারে, সুতরাং আমার উত্তর কীভাবে ওভারফ্লো আইকন চিত্রটি ওভাররাইড করা যায় তার একটি অন্য উদাহরণ।

নীচের কোডটি এডিটি নমুনা নতুন অ্যান্ড্রয়েড প্রকল্পের টেম্পলেট শৈলীর উপর ভিত্তি করে। কোডটি ফোল্ডারে styles.xmlফাইল থেকে আসে res/values


<style name="AppBaseTheme" parent="android:Theme.Light">
    <!--
        Theme customizations available in newer API levels can go in
        res/values-vXX/styles.xml, while customizations related to
        backward-compatibility can go here.

    -->
</style>

<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">

    <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    <item name="android:actionOverflowButtonStyle">@style/OverflowMenuButton</item>
</style>

<style name="OverflowMenuButton" parent="@android:style/Widget.Holo.ActionButton.Overflow">
    <item name="android:src">@drawable/ic_menu_moreoverflow</item>
</style>

এই উপরের কোডটি যা করে তা হ'ল নামযুক্ত আপনার যা কিছু আঁকতে পারে তার সাথে ডিফল্ট ওভারফ্লো আইকনটি প্রতিস্থাপন করা ic_menu_moreoverflow। যদি আপনি এটির পরীক্ষা করার দ্রুত উপায় চান তবে আপনার অ্যাপ্লিকেশনটির লঞ্চার আইকন ফাইলের নামটি ব্যবহার করুন, এটি এটি কীভাবে কাজ করে তা সুস্পষ্ট করে তুলবে।

ActionBarস্টাইলিং বোঝার চেষ্টা করার সময় ব্যবহার করার জন্য একটি দরকারী সংস্থান হ'ল:

সেখানে আপনি আপনার ওভারফ্লো আইকনটির জন্য নির্দিষ্ট রঙগুলি নির্দিষ্ট করতে পারবেন এবং জিপ ফাইলটি styles.xmlআপনার জন্য সঠিক ফাইলটি অন্তর্ভুক্ত করবে।


1

ওভারফ্লো আইকন রঙ পরিবর্তনের জন্য, আপনি কেবল যুক্ত করতে পারেন

toolbar.setOverflowicon(getDrawable(R.id.whiteIcon));

অথবা

toolbar.setOverflowicon(getDrawable(R.id.redIcon));

এটি আইকনটি পরিবর্তন করবে, আপনি যে রঙ চান তা চয়ন করুন এবং ওভারফ্লিকন হিসাবে সেট করবেন।


0

দীর্ঘ অনুসন্ধানের পরে আমার কী নির্দেশনা পেয়েছিল তা অনুসরণ করতে হবে:

  1. মেনিফেস্টো ফাইলে থিমটি পরীক্ষা করুন।
  2. তারপরে res-> মান-> থিমগুলিতে যান।
  3. এই ফাইলটিতে থিমের নামটি সন্ধান করুন।
  4. থিম.এক্সএমএলে থিমের মধ্যে আইটেমটি যুক্ত করুন:

    <item name="android:actionBarWidgetTheme">@style/widgetStyle</item>
    <item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>
  5. শৈলীতে আইকনটি একই ফাইলটিতে যুক্ত করুন মানে আমি থিম.এক্সএমএল:

    <style name="MyActionButtonOverflow" parent="android:style/Widget.Holo.ActionButton.Overflow">
    <item name="android:src">@drawable/icon_menu</item>
    </style>
  6. আপনি যে কাস্টম আইকনটি পরিবর্তন করতে চান তা দেখুন

এটা আমার জন্য কাজ করেছে

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