মেটাল ডিজাইন নেভিগেশন ড্রয়ারে হ্যামবার্গার আইকনের রঙ কীভাবে পরিবর্তন করবেন


88

আমি এই উদাহরণ অনুসরণ করছি

http://www.androidhive.info/2015/04/android-getting-started-with-matory-design/

এবং এই উদাহরণে এটি হ্যামবার্গার আইকনটি সাদা দেখাচ্ছে, আমি এটিকে কাস্টমাইজ করতে এবং এটি কালো করতে চাই, তবে কীভাবে এটি পরিবর্তন করতে হবে তার কোনও কিছুই আমি খুঁজে পাচ্ছি না, কেউ কীভাবে এটি কাস্টমাইজ করতে হয় তা বলতে পারে?

প্রকাশ

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="info.androidhive.materialdesign" >


    <uses-permission android:name="android.permission.INTERNET"></uses-permission>

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/MyMaterialTheme" >
        <activity
            android:name=".activity.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

স্টাইল

<resources>

    <style name="MyMaterialTheme" parent="MyMaterialTheme.Base">

    </style>

    <style name="MyMaterialTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="homeAsUpIndicator">@drawable/hamburger</item>
    </style>

</resources>

প্রধান কাজ

public class MainActivity extends AppCompatActivity implements FragmentDrawer.FragmentDrawerListener {

    private static String TAG = MainActivity.class.getSimpleName();

    private Toolbar mToolbar;
    private FragmentDrawer drawerFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       mToolbar = (Toolbar) findViewById(R.id.toolbar);

        setSupportActionBar(mToolbar);
        getSupportActionBar().setDisplayShowHomeEnabled(true);

        drawerFragment = (FragmentDrawer)
                getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
        drawerFragment.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout), mToolbar);
        drawerFragment.setDrawerListener(this);

        // display the first navigation drawer view on app launch
        displayView(0);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        if(id == R.id.action_search){
            Toast.makeText(getApplicationContext(), "Search action is selected!", Toast.LENGTH_SHORT).show();
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onDrawerItemSelected(View view, int position) {
        displayView(position);
    }

    private void displayView(int position) {
        Fragment fragment = null;
        String title = getString(R.string.app_name);
        switch (position) {
            case 0:
                fragment = new HomeFragment();
                title = getString(R.string.title_home);
                break;
            case 1:
                fragment = new FriendsFragment();
                title = getString(R.string.title_friends);
                break;
            case 2:
                fragment = new MessagesFragment();
                title = getString(R.string.title_messages);
                break;
            case 3:
                fragment = new ContactUsFragment();
                title = getString(R.string.title_contactus);
                break;
            case 4:
                fragment = new AboutUsFragment();
                title = getString(R.string.title_aboutus);
                break;
            default:
                break;
        }

        if (fragment != null) {
            FragmentManager fragmentManager = getSupportFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.container_body, fragment);
            fragmentTransaction.commit();

            // set the toolbar title
            getSupportActionBar().setTitle(title);
        }
    }

শুধু ব্যবহার নিম্নলিখিত লাইন <আইটেমের নাম = "homeAsUpIndicator"> @ অঙ্কনযোগ্য / icon_top_menu </ আইটেমটি> style.xml থিমে ,, কাস্টম অঙ্কনযোগ্য সঙ্গে icon_top_menu প্রতিস্থাপন করুন।
Reprator

আমি এই <আইটেমের নাম = "হোমএএসইউপিআইডিকেটর"> @ অঙ্কনযোগ্য / আইকন_টপ_মেনু </item> যুক্ত করছি ..আপনি কী করতে হবে তা বলতে পারেন ..
আদিত্য

পছন্দসই রঙের বার্গার মেনু আইকন সহ আপনার ছবিতে অন্য ছবি যুক্ত করুন এবং উপরের চিত্রের সাথে আইকন_টপ_মেনু প্রতিস্থাপন করুন
নীতেশ

আইকন_টপ_মেনু কি ঠিক ছবিটি হওয়া উচিত?
আদিত্য

আমি একটি ছবি <আইটেমের নাম = "homeAsUpIndicator"> @ অঙ্কনযোগ্য / হ্যামবার্গার </ আইটেমটি> তার শৈলী সাদা ইমেজ দেখাচ্ছে যোগ
আদিত্য

উত্তর:


232

হ্যামবার্গার আইকনের রঙ পরিবর্তন করতে আপনাকে "স্টাইল.এক্সএমএল" শ্রেণি খুলতে হবে, তারপরে এই কোডটি চেষ্টা করে দেখুন:

<style name="MyMaterialTheme" parent="MyMaterialTheme.Base">

</style>

<style name="MyMaterialTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
</style>

<style name="DrawerArrowStyle" parent="@style/Widget.AppCompat.DrawerArrowToggle">
    <item name="spinBars">true</item>
    <item name="color">@android:color/black</item>
</style>

সুতরাং <item name="color">@android:color/black</item>লাইন চেক করুন । এখানে আপনার পছন্দসই রঙ পরিবর্তন করুন।


যাইহোক আপনি এই github.com/codepath/android_guides/wiki/… লিঙ্কটি পরীক্ষা করতে পারেন । এটা ভাল টিউটোরিয়াল আছে।
আনন্দ সিং

সুতরাং আপনার মেইনএ্যাকটিভিটিতে উপরের কোডটি লিখুন, এটি কার্যকর হবে।
আনন্দ সিং

তবে এটি ডাউনলোডের অনুমতি
আদিত্য


ভাল উত্তর. পরিবর্তে নির্বাচিত ক্রিয়াকলাপগুলির জন্য কীভাবে আইকনটির রঙ পরিবর্তন করবেন তা আপনি কী জানবেন?
অ্যানড্রয়েড ডেভব্রো

63

এটি প্রোগ্রামক্রমে এই লাইন যুক্ত করুন

actionBarDrawerToggle.getDrawerArrowDrawable().setColor(getResources().getColor(R.color.white));

তবে আমরা কীভাবে অ্যাকশনবারড্রওয়ারটগলের একটি রেফারেন্স পাই? (আপনার পরামর্শ কোড চালনাকারী নাল ফিরে আসবে, কারণ আমরা actionBarDrawerToggle একটি রেফারেন্স না)
Daron

4
আর তাকানোর দরকার নেই, সাঁই গোপী এন এই প্রশ্নের সঠিক উত্তর দিলেন। দারনকে উত্তর দেওয়ার জন্য আপনাকে আপনার মূল ক্রিয়াকলাপে একটি উদাহরণ তৈরি করতে হবে। অ্যাকশনবারড্রাওয়ারটগল অ্যাকশনবারড্রাওয়ারটগল = নতুন অ্যাকশনবারড্রওয়ারটোগল (এটি, ড্রয়ারলয়েট, সরঞ্জামদণ্ড, আর। স্ট্রিং.ডাওয়ার_পেন, আর স্ট্রিং.ড্রেওয়ার_ক্লোজ);
কিপএটিআইটি

15

1. রঙ। এক্সএমএল।<color name="hamburgerBlack">#000000</color>

2. ইন স্টাইল.এক্সএমএল।

<style name="DrawerIcon" parent="Widget.AppCompat.DrawerArrowToggle">
        <item name="color">@color/hamburgerBlack</item>
    </style>

৩. তারপরে আপনার মূল থিমের ক্লাস (ফাইলের নাম style.xml) I

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
         <item name="drawerArrowStyle">@style/DrawerIcon</item>
    </style>


9

তার জন্য আপনি নিম্নলিখিত হিসাবে এগিয়ে যেতে পারেন:

protected ActionBarDrawerToggle drawerToggle;

drawerToggle.getDrawerArrowDrawable().setColor(getResources().getColor(R.color.black));

@ গ্রেটিইন অসীমবাবু আপনার পোস্ট করা কোডটি ক্র্যাশ হয়ে যাবে কারণ ড্রয়ারটগল-এর কোনও রেফারেন্স নেই .... আমরা কীভাবে একটি রেফারেন্স পাই?
দারন


2
<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorTransparent"

থিমগুলিও সরান

    android:theme="@style/AppThemeNoActionBar.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
      ***

এটা সরাও

*** অ্যাপ: পপআপ থেম = "@ স্টাইল / অ্যাপ থিমনিঅ্যাকশনবার.পপআপ ওভারলে">

</android.support.design.widget.AppBarLayout>

অবশেষে এটি যোগ করুন

 <style name="AppThemeNoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>

আপনার প্রধান heme

        <item name="colorControlNormal">@color/colorRedTitle</item>

    </style>

1

আপনি অ্যাপ্লিকেশন সেট করার সময় এটি দুর্দান্ত কাজ করে: থিম = "@ স্টাইল / মাইমেটারিয়াল থিম"


অথবা আপনি যদি আপনার অ্যান্ড্রয়েড ম্যানিফেস্ট থিমের নামটি আপনার স্টাইলস.এক্সএমএল শৈলীর নামের সাথে মেলে।
নিক পার্মি

0

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

setSupportActionBar(toolbar);
        final Drawable upArrow = getResources().getDrawable(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
        upArrow.setColorFilter(getResources().getColor(R.color.black), PorterDuff.Mode.SRC_ATOP);
        getSupportActionBar().setHomeAsUpIndicator(upArrow);
        getSupportActionBar().setTitle(Html.fromHtml("<font color=\"black\">" + "All Addresses" + "</font>"));
        getSupportActionBar().show();

হোম বোতাম পরিবর্তন করার জন্য, আমি @ আনসিংহ উত্তরটি অনুসরণ করেছি।


4
এটি একটি সুন্দর হ্যাকি এবং উপায় বজায় রাখা শক্ত ... আমি বলব এটি অনুসরণ না করে কিছু না করাই ভাল would এটি যদিও একটি ডেমোর জন্য কাজ করে একটি নমুনা পেতে সহায়তা করতে পারে।
অলিভিয়ারএম

@ তরুন ভুরা - এটি আমি যা খুঁজছিলাম ঠিক সেটাই হতে পারে ... আমি কোড ব্যবহার করে এটি পরিবর্তন করার একটি উপায় খুঁজছি ... আগামী কয়েকদিনের মধ্যে আমি এটি সন্ধান করব ... আগাম ধন্যবাদ! .. আমি যদিও হ্যামবার্গার মেনু আইকনটি খুঁজছি ... তবে এটি আমাকে সঠিক দিকে নির্দেশ করতে পারে।
দারন

0
//----------your own toolbar-----------------------------

            <?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:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:elevation="4dp"
                android:padding="1dp"
                android:background="@color/blue"
                >
                </android.support.v7.widget.Toolbar>

    //-----------Main activity xml, add your own toolbar-----------------------------------------------
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.v1technologies.sgcarel.FrameActivity">
        <include
            android:id="@+id/toolbar"
            layout="@layout/toolbar"
            />
        <FrameLayout
            android:padding="2dp"
            android:layout_marginTop="70dp"
            android:id="@+id/frame_frame_activity"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

    </FrameLayout>
    </RelativeLayout>


        //----  In your activity-----------------------

                   toolbar = (Toolbar) findViewById(R.id.toolbar);       
                    setSupportActionBar(toolbar);

            //===========================================================================

             @Override
                public boolean onCreateOptionsMenu(Menu menu) {
                    // Inflate the menu; this adds items to the action bar if it is present.
                    getMenuInflater().inflate(R.menu.menu_main, menu);

                    int color = Color.parseColor("#334412");
                    final PorterDuffColorFilter colorFilter = new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_ATOP);

                    for (int i = 0; i < toolbar.getChildCount(); i++) {
                        final View v = toolbar.getChildAt(i);

                        if (v instanceof ImageButton) {
                            ((ImageButton) v).setColorFilter(colorFilter);
                        }
                    }
                    return true;
                }

0

আপনি যদি কেবল নিজের নেভিগেশন ড্রয়ার আইকনে রঙ পরিবর্তন করতে চান তবে এটি চেষ্টা করুন:

<android.support.design.widget.NavigationView
    app:itemIconTint="@color/thecolorthatyouwant"
 />

সরাসরি আপনার কার্যকলাপ_ড্রেয়ার.এক্সএমএল এ


-1

হ্যামবার্গার আইকনটি আপনার অ্যাকশন ActionBarDrawerToggleক্লাস দ্বারা নিয়ন্ত্রিত হয় । আপনি যদি অ্যান্ড্রয়েড কমপ্যাট লাইব্রেরি ব্যবহার করছেন যা এখনকার হিসাবে আবশ্যক। আপনি রঙটি এইভাবে পরিবর্তন করতে পারেন:

    toggle?.drawerArrowDrawable?.color = ContextCompat.getColor(context, R.color.colorPrimary)

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