2011-04-06 8 views

답변

14

PreferenceActivity을 확장하는 활동을 사용한다고 가정합니다. setTheme 메서드를 사용하여 기본 설정 화면에서 사용자 지정 테마를 설정할 수 있습니다. res/values/themes.xml에 하나만 정의하십시오.

그것은 다음과 같을 것이다 :

<?xml version="1.0" encoding="UTF-8"?> 
<resources xmlns:android="http://schemas.android.com/apk/res/android"> 
    <style name="Theme.DarkText"> 
    <item name="android:textColor">#000000</item> 
    </style> 
</resources> 

는 이후 액티비티에서 설정 :

setTheme(R.style.Theme_DarkText); 
+0

레이아웃을 만든 후 * 텍스트 색상을 변경하려면 어떻게해야합니까? –

+0

@MarioB이 코드는 EditTextPreference를 제외한 기본 설정의 제목 텍스트 색상을 변경할 수 있습니다. EditTextPreference의 제목 (대화 제목이 아님)의 속성 이름은 무엇입니까? – shantanu

0

나는 Udinic의 아이디어를했다,하지만 난 그것을 조금 개선되었다. 뷰어를 팽창시킬 때뿐만 아니라 언제든지 (이 경우) PreferenceCategory의 색상을 설정할 수 있습니다.

어떻게 만드시겠습니까?

첫째, 이곳과 같은 사용자 정의 클래스를 만들 :이 완료

import android.content.Context; 
import android.preference.PreferenceCategory; 
import android.util.AttributeSet; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 

public class MyPreferenceCategory extends PreferenceCategory { 

private TextView categoryTitle; 

public PincardPreferenceCategory(Context context) { 
    super(context); 
    // TODO Auto-generated constructor stub 
} 

public PincardPreferenceCategory(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    // TODO Auto-generated constructor stub 
} 

public PincardPreferenceCategory(Context context, AttributeSet attrs, 
     int defStyle) { 
    super(context, attrs, defStyle); 
    // TODO Auto-generated constructor stub 
} 


@Override 
protected View onCreateView(ViewGroup parent) { 
    categoryTitle = (TextView)super.onCreateView(parent); 
    return categoryTitle; 
} 


public void setBackgroundColor(int color) { 
    categoryTitle.setBackgroundColor(color); 
} 


public void setTextColor(int color) { 
    categoryTitle.setTextColor(color); 
} 

} 

후에는 XML에서 설정을 정의 할 때 사용합니다.

당신이 당신 자바 PreferenceActivity를이 루프를 사용해야 후 : 여기

for (int i = 0; i < getListView().getCount(); i++) { 
     Object view = getListView().getItemAtPosition(i); 
     if (view instanceof PincardPreferenceCategory) { 
      ((PincardPreferenceCategory)view).setBackgroundColor(Color.BLUE); 
      ((PincardPreferenceCategory)view).setTextColor(Color.RED); 
     } 
    } 

는 생각이다. 모든 설정에 대해 언제든지 설정할 수 있습니다. 그렇지 않으면 getListView(). getCount()는 0을 반환 할 것이므로이 코드를 사용하기 전에 레이아웃이 완전히로드되어 있어야합니다. 예를 들어 onCreate에서 사용하면 작동하지 않습니다. 시작시이를 수행하려면 onWindowFocusChanged 메소드에서 수행 할 것을 권장합니다.

+0

ListView가보기 재활용을 구현하고 * 모든 *보기를 만들지 않기 때문에 화면에 맞는 항목이 더있을 때 작동하지 않습니다. –

관련 문제