我已经在真正的手机中安装了我的应用程序,即使在模拟器中所有的文本也是如此 偏好摘要似乎是相同颜色,在真实手机中颜色不同(某种蓝色......但我想这取决于手机的型号)。
如何将此颜色设置为自定义首选项组件? (我已经实现了自己的搜索栏,其摘要文本颜色与所有其他组件文本颜色不同......)。
谢谢!
答案 0 :(得分:4)
Preference pUpdate = findPreference("sys_setting_update");
pUpdate.setSummary(Html.fromHtml("<font color=\"#B0C4DE\">This is content</font>"));
将Html.fromHtml("<font color=\"#B0C4DE\">This is content</font>")
用于setSummary
答案 1 :(得分:3)
我找到了一种方法来检索运行应用程序的Android设备所使用的默认颜色。有一点很棘手,并且需要检索从您的活动的另一个“首选项摘要”视图中显示的颜色并存储它在运行时。
然后您可以在其他偏好的其他视图中使用相同的颜色代码,确保您将始终获得Android分配给标准首选项的相同颜色代码。我是这样做的:
我的偏好设施活动有一个普通的CheckBoxPreference,用于激活或停用服务。我已经扩展了CheckBoxPreference,如下所示,所以我的扩展在rutime中检索Android最终给出的CheckBoxPreference摘要的默认颜色:
public class MyCheckBoxPreference extends android.preference.CheckBoxPreference {
private static int sSummaryColor = Color.WHITE;
private static boolean sInitialized = false;
public MyCheckBoxPreference(Context context) {
super(context);
}
public MyCheckBoxPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyCheckBoxPreference(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void onBindView(View view) {
super.onBindView(view);
if (!sInitialized) {
sSummaryColor = getSummaryColor(view);
sInitialized = true;
}
}
private int getSummaryColor(View view) {
int color = Color.WHITE;
// Gets the color android gave to the summary by default
TextView summaryView = (TextView) view.findViewById(android.R.id.summary);
if (summaryView != null) {
ColorStateList list = summaryView.getTextColors();
if (list != null) {
color = list.getDefaultColor();
}
}
return color;
}
public static int getSummaryColor() {
return sSummaryColor;
}
}
在我的preferences.xml中,我将该首选项实例化为MyCheckBoxPreference而不仅仅是CheckBoxPreference:
<org.yourpackage.MyCheckBoxPreference
android:title="@string/preference_title_activate"
android:defaultValue="false"
android:summary="@string/preference_summary_activate_off"
android:summaryOff="@string/preference_summary_activate_off"
android:key="preference_activate">
</org.yourpackage.MyCheckBoxPreference>
在使用MyCheckBoxPreference.getSummaryColor()检索摘要颜色之前,必须对MyCheckBoxPreference进行一次实例化。
现在您可以从onBindView(View)设置其他自定义首选项的颜色:
public class MyCustmizedPreference extends Preference {
public MyCustmizedPreference (Context context) {
super(context);
setLayoutResource(R.layout.my_customized_preference);
}
@Override
public void onBindView(View view) {
super.onBindView(view);
TextView summaryView = (TextView) view.findViewById(android.R.id.summary);
if (summaryView != null) {
summaryView.setTextColor(MyCheckBoxPreference.getSummaryColor());
}
}
}
它实际上可以在三星Galaxy S下运行。我还测试过它在仿真器下没有破坏任何东西。
答案 2 :(得分:2)
我找到了这些:android:textAppearance="?android:attr/textAppearanceLarge"
并且android:textAppearance="?android:attr/textAppearanceSmall"
似乎可以解决问题。
答案 3 :(得分:2)
三星Galaxy S手机拥有自己的首选项布局,并为摘要行指定了文本颜色。即使指定了TextAppearance.Small,布局的textColor属性也会覆盖文本外观。
答案 4 :(得分:1)
我不认为这是可能的。我可以更改背景颜色和标题文字颜色,但不能更改摘要颜色。
背景:
getListView().setBackgroundColor(Color.TRANSPARENT);
标题文字:
Preference yourpreference = findPreference("yourpreference");
TextView tv = (TextView)yourpreference.getView(null, getListView());
tv.setTextColor(...);
抱歉,我忍不住了......
答案 5 :(得分:0)
我遇到了同样的问题,而且我一直在试验我的自定义搜索栏偏好风格。最后onCreateView
seekBarPreference.java
方法中的这些行以默认文字颜色显示偏好摘要:
TextView summaryText = new TextView(getContext());
summaryText.setText(getSummary());
summaryText.setTextAppearance(getContext(), android.R.style.TextAppearance_Small);
我在preference_screen.xml
:
<com.asdasf.SeekBarPreferencias
android:key="@string/pref_seekBar_distance_key"
android:id="@+id/mySeekBarPreference"
android:title="@string/pref_seekBar_distance_title"
android:summary="@string/pref_seekBar_distance_summary"
android:max="50"
android:defaultValue="12"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
我希望它会有用......(而且我已经写好了我的第一个答案) 方面!