programing

내비게이션 드로어 항목 아이콘이 원래 색상을 나타내지 않음

randomtip 2022. 9. 30. 09:07
반응형

내비게이션 드로어 항목 아이콘이 원래 색상을 나타내지 않음

네비게이션 드로어의 메뉴 항목 옆에 아이콘을 표시하려고 하는데 어떤 이유에서인지 아이콘이 항상 원래 색상(갈색)이 아닌 회색으로 표시됩니다.아이콘의 원래 색상을 나타내기 위해 이를 방지할 수 있는 방법이 있습니까?

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>

여기에 이미지 설명 입력

여기서 답을 찾았습니다.https://stackoverflow.com/a/30632980/875249

링크를 피하려면 다음 절차를 따릅니다.

    mNavigationView.setItemIconTintList(null);

이렇게 하면 모든 상태 기반 색칠이 비활성화되지만 자체 목록을 지정할 수도 있습니다.나한테는 아주 잘 먹혔어!

여기에서는 색상 상태 목록을 작성하는 방법에 대한 자세한 내용을 볼 수 있지만, 매우 간단합니다.http://developer.android.com/reference/android/content/res/ColorStateList.html

    <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>

사용하다

    mNavigationView.setItemIconTintList(null);

맞아요.또한 모든 아이콘이 하나의 색상표(모두 흰색)로 표시되는 경우 xml 파일을 통해 설정할 수 있습니다 - app: itemIconTint="@android:color/white"

내 경우:

<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"
    />

내 앱에서 비슷한 걸 해봤어.네, 아이콘 색상은 변하지 않는 것 같습니다.하지만 다른 해결 방법을 찾아냈습니다.여기 있습니다.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);

효과가 있는 것 같아요결과는 이렇습니다.

여기에 이미지 설명 입력

탐색 드로어가 있는 프로젝트를 생성하는 경우, 이 탐색 드로어는Android Studio제공.메인 액티비티 클래스에서는, 이 코드 라인을 간단하게 추가할 수 있습니다.navigationView.setItemIconTintList(null);고객님께onCreate방법.이렇게.

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

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 저는 이 라이브러리를 프로젝트에 많이 사용합니다.

xml에 한 줄만 추가

app:itemIconTint="@color/white"

이 코드가 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

해결책을 찾았어요

1) [Design]으로 이동합니다.
2) navView클릭합니다.
3) 속성 항목 검색
4) 기입null를 누릅니다.

추가

 android:tint="@color/colorPrimary"
 BottomNavigationView navigationbtn = findViewById(R.id.bottomNavigationView);

 BottomNavigationMenuView mbottomNavigationMenuView =
                (BottomNavigationMenuView) navigationbtn.getChildAt(0);

       View view3 = mbottomNavigationMenuView.getChildAt(2);

       BottomNavigationItemView itemView3 = (BottomNavigationItemView) view3;

        itemView3.setIconTintList(null);

언급URL : https://stackoverflow.com/questions/31394265/navigation-drawer-item-icon-not-showing-original-colour

반응형