2017-10-03 1 views
1

ListView가 있고 DrawerLayout 내부에 선택기를 통해 배경이 적용되고 있지만 선택된 항목의 배경색이 지정되었지만 해당 색상이 적용되지 않고 녹색 색상 (그것에서 오는 어떤 생각은하지 어디서나 내 colors.xml 또는 년)안드로이드 - 선택기를 통해 ListView에서 선택된 항목의 배경색

다음

내가 가진 무엇

menuitem_style.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item 
    android:state_selected="true" 
    android:drawable="@color/mainColor"/> 
<!--mainColor is #4CAEE3--> 
<item 
    android:drawable="@android:color/white" /> 

목록보기 :

<ListView 
    android:id="@+id/left_drawer" 
    android:layout_width="240dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:background="@drawable/menuitem_style" 
    android:choiceMode="singleChoice" 
    android:divider="@android:color/white" 
    android:dividerHeight="1dp" 
    android:paddingTop="10dp" /> 

관련 자바 코드

mDrawerList.setItemChecked(position, true); 
     mDrawerList.setSelection(position); 

이 결과입니다 :

enter image description here

mainColor 녹색 확실히 파란색과하지 (# 4CAEE3) I 틀린 일을하고 있는지, 무엇을 확신 할 수 없는지. 어떤 도움이 부여 될 것입니다. 미리 감사드립니다.

답변

1

목록보기 및 recyclerview에서보기가 재활용된다는 개념에 유의하십시오.

당신은 현재 선택된 요소의 위치 추적 유지할 수 있습니다 :

OnItemClickListener listViewOnItemClick = new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> adapter, View arg1, int position, long id) { 
       mSelectedItem = position; 
       mAdapter.notifyDataSetChanged(); 
     } 
    }; 

을 그리고 당신의 어댑터의 getView 메소드를 오버라이드 (override) :

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     final View view = View.inflate(context, R.layout.item_list, null); 

     if (position == mSelectedItem) { 
      // set your color 
     } 

     return view; 
    } 

를 나에게는 트릭을했다.

+0

나를 위해, 고마워! –

+0

당신이 그것을 원한다면 내 게시물을 투표하실 수 있습니다 :) –

+0

이 솔루션은 모든 안드로이드 버전에서 작동하는지, 당신은 안드로이드 5에서 작동하지만 안드로이드 7에서 작동하지 않는다는 것을 아십니까 –

0

이 배경을 backgroundview보다는 backgroundview 배경으로 사용하십시오. 목록 뷰 채우기에 사용중인 행 xml 파일로 이동하여 거기에 배경을 설정하십시오. 희망은 당신을 도와줍니다.

+0

녹색 배경에 흰색 상자를 형성하는 흰색으로 "메시지"의 배경을 변경 목록 항목 –

0
android:listSelector="@drawable/listitem_selector" 

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

이 항목을 시도해보십시오. 그것은 당신을 도울 수 있습니다.

+0

배경이 검정색으로 바뀝니다. "전체"목록의 배경이 회색이지만 선택된 항목이 여전히 녹색 인 상태입니다. –

관련 문제