显然,如果您要对颜色进行硬编码,则可以在XML中进行编码:
android:background="@android:color/red"
如果您想在代码中执行此 *** 作,那么不幸的是,它比看起来更棘手。您不能只设置首选项视图的颜色,
onCreate()因为首选项视图存储在列表中,并在滚动列表时动态创建和回收。
创建视图时,需要设置背景颜色。为此,您需要实现一个自定义首选项类并重写
getView():
public class CustomColorPreference extends Preference{ int backgroundColor = Color.BLACK; public CustomColorPreference(Context context) { super(context); } public CustomColorPreference(Context context, AttributeSet attrs) { super(context, attrs); } public void setCustomBackgroundColor(int color) { backgroundColor = color; } @Override public View getView(View convertView, ViewGroup parent) { View v = super.getView(convertView, parent); // v.setBackgroundColor(backgroundColor); // set background color of whole view ImageView ivNameTextColor = (ImageView)v.findViewById(R.id.ivNameTextColor); ivNameTextColor.setBackgroundColor(backgroundColor); return v; }}
更改XML以使用
CustomColorPreference该类:
<com.example.yourapp.CustomColorPreference android:key="pref_name_color_picker" android:title="Colour" android:summary="Colour of the name" android:defaultValue="#FFFFFF" android:layout="@layout/custom_name_setting_layout" />
然后,您
onCreate可以
CustomColorPreference使用public方法获取并为其设置颜色
setCustomBackgroundColor():
CustomColorPreference picker = (CustomColorPreference)findPreference("pref_name_color_picker");picker.setCustomBackgroundColor(Color.RED);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)