문제

사용 중입니다 ExpandableListView 내 앱과 사용자로부터 얻은 불만 중 하나에서 List 품목이 확장됩니다. 자식 항목이 끝나고 다음 그룹 항목이 시작되는 위치를 시각적으로 구별하기가 어렵습니다.

그래서 나는 아이의 배경을 바꾸고 싶습니다 List 다른 그늘에 항목.

내가 지금까지했던 잔인한 시도는 자녀 내부의 요소의 직접적으로 변화하는 배경색과 텍스트를 기반으로 한 것입니다. View 항목이지만 이로 인해 호버와 하이라이트가 손실됩니다. 그래서 내 질문은 - 위의 것을 달성하기위한 좋은 전략은 무엇입니까?

나는 시도했다 styles 그리고 selectors 하지만 정말로 나를 부자하는 것은 내가 아이 품목에 대한 배경을 바꾸면 추가해야합니다. selectors Focus/Enabled 등의 모든 조합에 대해 하나의 일을 덮어 쓰려고 할 때.

부모를 물려받는 방법이 있습니까? style 그리고 설정 background 초점이 맞지 않는 사용 가능한 하위 항목과 다른 경우에만 styles 유지?

도움이 되었습니까?

해결책

잘. 저에게 효과가있는 것은 다음과 같습니다.

  1. 프로젝트에서 list_background.xml을 만듭니다 res/drawable 예배 규칙서
  2. 자녀 항목의 최상위 레이아웃의 배경 값을 위의 뽑을 수있는 것으로 설정하십시오. 이 시점에서 머리를 긁는 경우 - 확장 가능한 목록의 자식보기를 만들 때 사용되는 XML 레이아웃 파일을 언급하고 있습니다. ExpandableListAdapter#getChildView

다음은 완전한 드로잉 파일입니다

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:state_enabled="true"
        android:drawable="@drawable/list_highlight_active" />
    <item android:state_enabled="true" android:state_selected="true" 
        android:state_window_focused="true"
    android:drawable="@drawable/list_highlight_inactive" />
    <item android:state_enabled="true" android:state_window_focused="true" 
        android:drawable="@color/item_body" />
    <item android:drawable="@color/item_body" />
</selector>

나는 복사해야했다 list_highlight_active.xml 그리고 list_highlight_inactive.xml ~에서 /android-sdk-windows-1.6_r1/platforms/android-1.5/data/res/drawable 내 프로젝트의 드로잉 디렉토리로. @color/item_body 회색 음영 일뿐입니다

다른 팁

방금 선택기 후프를 뛰어 넘지 않고도 배경색을 "다소"설정하는 방법을 발견했습니다.

당신이 언급했듯이, 배경을 단색으로 설정하면 새로운 배경색이 모호하기 때문에 선택기 하이라이트를 닦아냅니다. Droidin은 정상적인 해결책이 무엇입니까? 원하는 색상을 제공하십시오. 가장 말하는 것은 고통입니다.

그러나 원하는 것이 약간의 색상 차별화라면 더 간단한 방법이 있습니다 : Alpha Blend. 알파 값으로 배경색을 설정하십시오. 예를 들어, 배경을 "#BBFFFFFF"로 설정하십시오. 처음 두 자리는 알파 레벨을 나타냅니다. 배경이 순수한 흰색이되지 않고 선택 하이라이트는 일반적인 밝은 주황색이 아니지만 어린이는 다른 색상이 될 것이며 하이라이트는 여전히 작동합니다. 윈윈.

비슷한 솔루션을 검색합니다. 어댑터 방법 GetChieldView에서 부모보기를 시도 할 수 있습니다. 나는이 부모가 당신의 모든 chields의 부모의 견해라고 생각합니다. 자원 에서이 부모에게 배경을 설정하십시오. 나는 이것을처럼 만든다 :

@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild,  View convertView, ViewGroup parent) {
    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.fa_report_sub_item, null);
        View parentGroup=(View) convertView.getParent();
        parentGroup.setBackgroundResource(R.drawable.fa_summ_report_main_item);
    }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top