2017-05-16 5 views
1

나는 최근 Android의 BottomNavigationView 구성 요소를 탐구했습니다. 나는 4 개 메뉴 항목을 보유하고 있으며, 현재 내 BottomNavigationView 구성은 다음과 같습니다안드로이드 하단 탐색 변경 텍스트 및 항목 선택에 아이콘 색조

<android.support.design.widget.BottomNavigationView 
    android:id="@+id/activity_product_details_bottom_navigation_view" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    app:itemBackground="@color/colorPrimary" 
    app:itemIconTint="@color/menu_select_deselect" 
    app:itemTextColor="@color/menu_select_deselect" 
    app:menu="@menu/menu_product_details"/> 

내가 원하는 것은 & 선택한 요소의 고유 색상 인 선택 해제 된 하나입니다. 다음과 같이

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:color="@color/white" android:state_checked="true"/> 
    <item android:color="@color/tint_color_deselected"/> 
</selector> 

menu_product_details.xml는 다음과 같이 나 또한 고해상도/컬러 디렉토리에 위치 색 상태 목록 파일 이름 menu_select_deselect.xml을 만들어

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 

<item 
    android:id="@+id/menu_product_details_home" 
    app:showAsAction="ifRoom" 
    android:enabled="true" 
    android:icon="@drawable/ic_home" 
    android:title="@string/menu_product_details_home" /> 

<item 
    android:id="@+id/menu_product_details_product_documents" 
    app:showAsAction="ifRoom" 
    android:enabled="true" 
    android:icon="@drawable/ic_product_documents" 
    android:title="@string/menu_product_details_product_documents" /> 

<item 
    android:id="@+id/menu_product_details_product_part_list" 
    app:showAsAction="ifRoom" 
    android:enabled="true" 
    android:icon="@drawable/ic_product_part_list" 
    android:title="@string/menu_product_details_product_part_list" /> 

<item 
    android:id="@+id/menu_product_details_product_service" 
    app:showAsAction="ifRoom" 
    android:enabled="true" 
    android:icon="@drawable/ic_product_service" 
    android:title="@string/menu_product_details_product_service" /> 
</menu> 

사람이 코드에 어떤 문제가 있는지에 좀 도와 줄래 다른 3 항목을 클릭해도 첫 번째 요소 만 흰색으로 표시됩니까?

+0

menu_product_details.xml의 모든 항목은 android : enabled = "true"를 유지합니까? 즉, 메뉴에서 모든 항목을 사용할 수 있습니까? – Ram

+0

예 모든 항목의 속성이 android : enabled = "true"로 설정되어 있습니다. –

답변

0

하는 @drawable 아니라 내 자신의 질문에 대답

<android.support.design.widget.BottomNavigationView 
    android:id="@+id/activity_product_details_bottom_navigation_view" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    app:itemBackground="@color/colorPrimary" 
    app:itemIconTint="@drawable/menu_select_deselect" 
    app:itemTextColor="@drawable/menu_select_deselect" 
    app:menu="@menu/menu_product_details"/> 
+0

"@drawable"과 "@color"둘 다 ​​잘 작동합니다. –

3

을 @color 당김 사용을 참조하면서, 내 코드에서 실수는 이전에 내가 반환하고, onNavigationItemSelected의 반환 값은() 아래에 언급 된 대체했다 false, true를 반환하는 것이지만 누군가에게 도움이 될 수 있습니다.

bottomNavigation.setOnNavigationItemSelectedListener(
new BottomNavigationView.OnNavigationItemSelectedListener() { 
@Override 
public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
    switch (item.getItemId()) { 
    case R.id.menu_product_details_home: 
    break; 
    case R.id.menu_product_details_product_documents: 
    break; 
    case R.id.menu_product_details_product_part_list: 
    break; 
    case R.id.menu_product_details_product_service: 
    break; 
    } 
    return true; 
} 
}); 
0
Change your selector file like below 

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:color="@color/white" android:state_enabled="true" /> 
    <item android:color="@color/colorPrimaryDark" android:state_enabled="false" /> 
</selector> 

and yes reference @drawable instead of @color 
+0

잘못되었습니다. state_checked가 아니고 state_enabled 여야합니다. – Kubicko

0

당신은 아이콘을 선택하고 텍스트의 색조 색상을 변경할 수 있습니다/

app:itemIconTint="" 
app:itemTextColor="" 

이를 추가하여 BottomNavigationView의 2 곳이 있습니다 취소하고 당신이 그릴 수 선택기를 추가하여 XML로 설정할 수 있습니다 그 안에.

이 아닌 선택한 항목의 아이콘을 변경하고 싶다면 다른 해결책이 있습니다. 당신의 BottomNavigationView XML 파일에서

app:itemIconTint="" 

를 제거하고 BottomNavigationView 사용할 경우 클래스에 선 아래 추가

bottomNavigationView.setItemIconTintList(null); 

이 선택한 항목 아이콘의 색조 효과를 해제하고 당신의 선택에 따라 아이콘이 변경됩니다 drawable.

나는 동일한 문제가있었습니다. 체크/선택 될 때 BottomNavigationView 항목의 아이콘을 변경하기위한 선택기 드로어 블을 추가했습니다. 각 항목에 대한 선택기 드로어 블이 BottomNavigationView의 메뉴 파일에 아이콘으로 추가됩니다.

관련 문제