নেভিগেশন ড্রয়ার আইটেম আইকনটি মূল রঙ দেখাচ্ছে না


138

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

MainActivity.java

public class MainActivity extends AppCompatActivity {

    private DrawerLayout mDrawerLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        if (navigationView != null) {
            setupDrawerContent(navigationView);
        }
    }

    private void setupDrawerContent(NavigationView navigationView) {
        navigationView.setNavigationItemSelectedListener(
                new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(MenuItem menuItem) {
                mDrawerLayout.closeDrawers();

                return true;
            }
        });
    }
}

drawer_view.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:title="Section">
        <menu>
            <item
                android:id="@+id/navigation_item_1"
                android:icon="@drawable/ic_browncircle"
                android:title="Sub item 1" />
        </menu>
    </item>
</menu>

এখানে চিত্র বর্ণনা লিখুন


তোমার কি আছে ic_browncircle?
ইয়ে লিন অং

@ ইয়েলআনং একটি ব্রাউন বৃত্ত ঠিক 'সাব আইটেম 1' এর পরের আইকনের মতো তবে বর্ণের বাদামি, ধূসর নয়।
ম্যাকারনলভার

আপনি কি .setColorFilter(MY_BROWN_COLOR)এই দৃষ্টিতে চেষ্টা করতে পারেন ?
ইয়ে লিন অং

নীচে আমার উত্তর দেখুন।
ইয়ে লিন অং

উত্তর:


350

আমি উত্তরটি এখানে পেয়েছি: https://stackoverflow.com/a/30632980/875249

লিঙ্কটি একেবারে সোজা এড়াতে:

    mNavigationView.setItemIconTintList(null);

এটি সমস্ত রাজ্য ভিত্তিক টিংটিংকে অক্ষম করে, তবে আপনি নিজের তালিকাটিও নির্দিষ্ট করতে পারেন। এটা আমার জন্য দুর্দান্ত কাজ করেছে!

আপনি এখানে রঙিন রাজ্যের তালিকা তৈরির বিশদটি পেতে পারেন তবে এটি খুব সহজ http : //

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_checked="true" android:color="@color/primary" />
        <item android:state_checked="false" android:color="@android:color/white" />
    </selector>

হ্যাঁ, আমি এটি একটি নেক্সাস 4 চলমান এপিআই 17 তে পরীক্ষা করেছি I কালারস্টেটলিস্ট কিছু সময়ের জন্য রয়েছে এবং নেভিগেশনভিউ সমর্থন লাইব্রেরির অংশ তাই আমি আইসিএস এবং সম্ভবত আরও পিছনে পিছনে এটি সমস্ত উপায় কাজ না করার কারণ দেখছি না।
ক্রিস

11
এর জন্য কোনও এক্সএমএল বিকল্প? চেষ্টা করেও app:itemIconTint="@null"সফল হয়নি।
मंगেশ

ধন্যবাদ, আমি এই সমস্যাটি নিয়ে মাথাব্যথা পেতে শুরু করেছি
wax911

4
mNavigationView.setItemIconTintList(null);এই উত্তরটি আমি এতক্ষণ খুঁজছিলাম ...
জাহিদ

1
আপনি নির্বাচক কোথায় ব্যবহার করবেন?
জন সারদিনহা

49

ব্যবহার

    mNavigationView.setItemIconTintList(null);

এটা ঠিক. এছাড়াও যদি আপনার সমস্ত আইকনগুলি এক রঙের স্কিমে (আমার সমস্ত সাদা ছিল) আপনি এক্সএমএল ফাইল - অ্যাপের মাধ্যমে সেটআপ করতে পারেন - আইটেমি আইকনটিন্ট = "@ অ্যান্ড্রয়েড: রঙ / সাদা"

আমার ক্ষেত্রে:

<android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:clickable="true"
    app:headerLayout="@layout/nav_header_main"
    app:itemTextColor="@android:color/white"
    app:menu="@menu/activity_main_drawer"
    android:background="@android:color/black"
    app:itemIconTint="@android:color/white"
    />


এই এক ভাল কাজ করে, mNavigationView.setItemIconTintList(null);সমস্ত আইকন থেকে ডিফল্ট আইকনটিন্ট সরান। এখন আপনার আইকনটি যদি লাল রঙে থাকে তবে এটি লাল প্রদর্শিত হবে, কোনও আইকনটিন্ট প্রয়োগ করা হবে না।
সৈয়দ হিসান

5

আমি আমার একটি অ্যাপে অনুরূপ কিছু চেষ্টা করেছি। এবং হ্যাঁ, এটি প্রদর্শিত হবে যে আইকনটির রঙ পরিবর্তন হয় না। তবে আমি অন্য একটি কাজটি করতে পেরেছি। এই আমারic_browncircle.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval"
    android:tint="@color/brown"
    >
  <size
      android:height="3dp"
      android:width="3dp"
      />
  <solid android:color="@color/brown"/>
</shape>

যা আমি বিশ্বাস করি এটি আপনার অনুরূপ কিছু তবে এটির কোনও প্রভাব নেই এবং রঙ পরিবর্তন হয় না।

সুতরাং আমি যা করেছি তা হ'ল।

navigationView.getMenu()
    .findItem(R.id. navigation_item_1)
    .getIcon()
    .setColorFilter(Color.parseColor("#b69260"), PorterDuff.Mode.SRC_ATOP);

এবং এটি কাজ করে বলে মনে হচ্ছে। ফলাফল এখানে।

এখানে চিত্র বর্ণনা লিখুন


প্রি-ললিপপ সম্পর্কে কী?
ম্যাকারনলভার

আমি প্রি-ললিপপের জন্য বেশ কয়েকটি সমাধান চেষ্টা করছি। এখনও অবধি, এখনও ভাগ্য নেই :(
আপনি লিন অং

4

আপনি যদি নেভিগেশন ড্রয়ারের সাথে একটি প্রকল্প তৈরি করেন যা Android Studioসরবরাহ করে। আপনার মূল ক্রিয়াকলাপ শ্রেণিতে, আপনি কেবল navigationView.setItemIconTintList(null);আপনার onCreateপদ্ধতিতে কোডের এই লাইনটি কেবল যুক্ত করতে পারেন । এটার মত;

 NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
 navigationView.setNavigationItemSelectedListener(this);
 navigationView.setItemIconTintList(null); // <----- HERE
 setupDrawerContent(navigationView);

3

আপনি একটি রঙিন অঙ্কনযোগ্য ব্যবহারের চেষ্টা করতে পারেন, এটি 5.0 এর নিচে কাজ করে কিনা তা নিশ্চিত নন।

একটি অঙ্কনযোগ্য তৈরি করুন এবং নিম্নলিখিত কোড যুক্ত করুন।

<?xml version="1.0" encoding="utf-8"?>
<bitmap
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/ic_browncircle"
    android:tint="@color/brownColor"/>

এবং তারপরে আপনার মেনু আইটেমটি আপনি স্রেফ তৈরি করেছেন এমনটিতে পরিবর্তনযোগ্য। যদি এটি কাজ না করে, তবে আমি অন্য কোনও সমাধান সম্পর্কে নিশ্চিত নই। আপনি এই লাইব্রেরিটি চেষ্টা করতে পারেন: https://github.com/mikepenz/MaterialDrawer আমি আমার প্রকল্পগুলিতে এটি প্রচুর ব্যবহার করি।


এই পদ্ধতিটি এপিআই 17 (4.2) এ কাজ করে না। কারণ (অন্তত আমার অভিজ্ঞতায়), নেভিগেশন ড্রয়ারটি যখন আপনার থিমটি আলোকিত হয়ে থাকে তখন স্বয়ংক্রিয়ভাবে একটি কালো রঙের রঙের সাথে একটি সাদা আইকনকে ওভারলে করে। আমি যখন আমার থিম থেকে আলো সরিয়ে ফেলি তখন আমার আইকনগুলি সাদা হওয়ার জন্য আমি যেমন ইচ্ছা করি তেমনি।
ক্রিস


1

কিছু এই কোড MainActivity.java কাজ করছে না

                NavigationView.setItemIconTintList(null); // not working

যাতে আপনি এটি ব্যবহার করতে পারেন।

MainActivity.java

 NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
   navigationView.setNavigationItemSelectedListener(this); 
   navigationView.setItemIconTintList(null); // <-- HERE add this code for icon color

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