2013-07-30 3 views
2

기본적으로 활성화되어 있지 않으면 회색으로 표시되는 코드에서 확인란을 사용하고 있습니다.움직이는 체크 박스는 어떻게 수정합니까?

public View getView(final Context context, View view) { 
    if (view == null) { 
     final LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     view = inflater.inflate(R.layout.item_selectable_textview, null); 
    } 

    final CheckedTextView textView = (CheckedTextView) view.findViewById(R.id.selectable_text); 
    textView.setText(mCategoryName); 

    if (isDefault()) { 
     mIsSelected = true; 
    } 

    textView.setChecked(mIsSelected); 
    if(!isEnabled()){ 
     textView.setCheckMarkDrawable(R.drawable.checkbox_selected_grayout); 
     textView.setBackgroundResource(R.drawable.checkboxline); 
     textView.setPadding(20, 20, 20, 20); 
    } 
    return view; 
} 

checkbox_selected_grayout 확인란에 대한 이미지는 다음과 같이 checkboxline에 대한 XML은 다음과 같습니다 : 나는 함께보기로 이동하고 때

<?xml version="1.0" encoding="UTF-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape android:shape="rectangle"> 
      <gradient 
       android:startColor="#202020" 
       android:endColor="#202020" 
       android:angle="360.0" /> 
     </shape> 
    </item> 
    <item android:top="40dp"> 
     <shape android:shape="rectangle"> 
      <solid android:color="#414141" /> 
      <size android:height="1dp" /> 
     </shape> 
    </item> 
</layer-list> 

체크 박스가 잘 보이는 여기에 동일한에 대한 코드입니다 확인란을 선택했지만보기의 맨 아래로 스크롤하여 맨 위로 돌아 가면 오른쪽으로 이동하고 다른 확인란과 정렬되지 않은 것처럼 보입니다.이를 수정하는 방법에 대한 단서가 있습니까? 참고 : 레이어 목록을 제거하고 ti를 단일 모양으로 바꾸면 마침표가없이 잘 작동합니다.

답변

-1

위아래로 스크롤 한 후 이상하게 보이는 문제는 종종 ListView에서보기를 재사용하는 것과 관련이 있습니다. ListView에서 요소의 서식을 지정하면 항상 모든 항목의 서식을 지정해야합니다.이 항목은 다시 사용되어 다른 항목에 대해 서식이 지정되었을 수 있으므로 "기본값"으로 유지하지 마십시오. 코드에서

당신은

!isEnabled()... 

을 가지고 있지만 활성화 된 경우에는 이러한 요소를 포맷하지 않습니다.