2013-11-15 1 views
0

Android 앱에서 아이콘 선택에 AlertBox를 사용합니다. 이 작업은 사용자 지정 어댑터에서 수행됩니다. 내가 선택한 클래스에 대한 backgrond 색상을 변경 ImageView에서 오는 클래스가 있습니다.ImageView에서 재생 된보기의 배경색 복원

잘 작동하면 어댑터의 변환 된보기에 대한 배경색을 재설정 할 수 있습니다. getBackGroundDrawable는 항상 null을 리턴합니까? 어떤 생각 ???

public View getView(int position, View convertView, ViewGroup parent) 
{ 
    JIconImageView imageView = ((convertView == null) ? new JIconImageView(m_context) : (JIconImageView)convertView); 

    imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 
    imageView.setPadding(2, 2, 2, 2); 
    imageView.setIsSelected(m_selected == position); 
    imageView.setImageResource(JEntryIconHelper.getIconFromIndex(position)); 

    return imageView; 
} 

공공 최종 클래스 JIconImageView에서

는 이미지 뷰가 enter code here

public void setIsSelected(boolean bSelected) 
{ 
    if (m_bSelected = bSelected) 
     setBackgroundColor(SELECTED_BACKCOLOR); 
    else setBackgroundDrawable(m_background); 
} 
+0

가하셨습니까 ==을 (m_bSelected = bSelected)? – Snicolas

+0

내 대답이 도움이 되었습니까? 그렇다면 정답으로 upvote 또는 표시하십시오. –

답변

0

지금까지 내가 아는 한, 현재의 테마 배경 색상을 얻을 수있는 쉬운 방법이 없다 확장합니다.

신뢰할 수있는 방법 중 하나는 getView에서 멤버 변수에 원래 배경색을 저장하는 것입니다 (또는 이전 버전에서는 일회용 JIconImageView를 만들어이 작업을 한 번 수행 할 수 있습니다). 예를 들어 어댑터를 바인딩하는 지점에서 :

JIconImageView imageView = new JIconImageView (...); 
Drawable origBackground = imageView.getBackground(); 
imageView = null; 

그런 다음 setIsSelected()에서 imageView.getBackground()를 참조하십시오.


또 다른 방법은 xml 선택기를 사용하는 것입니다. 당신이 볼 수 있듯이,이 솔루션은 색상보다는 드로어 블을 사용하지만 당신의 아이콘 크기를 고정하는 경우, 그 사소한 차이

<selector 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item 
    android:state_selected="true" 
    android:drawable="@drawable/your_selected_drawable" /> 

    <item 
    android:drawable="@drawable/your_unselected_drawable" /> 
</selector> 

(아마 비슷한 일을 수행 할 수 있습니다 : 이것은 당신의 "드로어 블"폴더에 간다 색상 - 당신은 그것을 연구해야합니다). 이 방법의 단점은 배경색을 하드 코딩했기 때문입니다. 적어도 정의는 당신의 자원에 있습니다.


당신은이 같은 안드로이드의 아이콘 정의 스타일, 무언가 참조하여 위의에 만들 수

:에

<JIconImageView 
    android:id=... 
    android:background="@drawable/jicon_background_selector />