gpt4 book ai didi

android - 自定义首选项,targetSdkVersion ="11": missing indent?

转载 作者:IT老高 更新时间:2023-10-28 23:10:44 27 4
gpt4 key购买 nike

我有几个自定义的 DialogPreference 实现 float ,例如 this one :

package apt.tutorial;

import android.content.Context;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import android.preference.DialogPreference;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.widget.TimePicker;

public class TimePreference extends DialogPreference {
private int lastHour=0;
private int lastMinute=0;
private TimePicker picker=null;

public static int getHour(String time) {
String[] pieces=time.split(":");

return(Integer.parseInt(pieces[0]));
}

public static int getMinute(String time) {
String[] pieces=time.split(":");

return(Integer.parseInt(pieces[1]));
}

public TimePreference(Context ctxt) {
this(ctxt, null);
}

public TimePreference(Context ctxt, AttributeSet attrs) {
this(ctxt, attrs, 0);
}

public TimePreference(Context ctxt, AttributeSet attrs, int defStyle) {
super(ctxt, attrs, defStyle);

setPositiveButtonText("Set");
setNegativeButtonText("Cancel");
}

@Override
protected View onCreateDialogView() {
picker=new TimePicker(getContext());

return(picker);
}

@Override
protected void onBindDialogView(View v) {
super.onBindDialogView(v);

picker.setCurrentHour(lastHour);
picker.setCurrentMinute(lastMinute);
}

@Override
protected void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);

if (positiveResult) {
lastHour=picker.getCurrentHour();
lastMinute=picker.getCurrentMinute();

String time=String.valueOf(lastHour)+":"+String.valueOf(lastMinute);

if (callChangeListener(time)) {
persistString(time);
}
}
}

@Override
protected Object onGetDefaultValue(TypedArray a, int index) {
return(a.getString(index));
}

@Override
protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
String time=null;

if (restoreValue) {
if (defaultValue==null) {
time=getPersistedString("00:00");
}
else {
time=getPersistedString(defaultValue.toString());
}
}
else {
time=defaultValue.toString();
}

lastHour=getHour(time);
lastMinute=getMinute(time);
}
}

它们工作得很好。但是,在定义了 android:targetSdkVersion="11" 的应用程序中,在 XOOM 上,它们在 PreferenceActivity 中显示缺少缩进:

PreferenceActivity with messed-up custom DialogPreference

此外,字体大小似乎稍大一些,至少对于标题而言。

DialogPreference 中没有任何内容,我真的覆盖了这些东西的任何格式化行为,AFAIK。偏好 XML 没什么特别的,除了引用上面的类:

<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<ListPreference
android:key="sort_order"
android:title="Sort Order"
android:summary="Choose the order the list uses"
android:entries="@array/sort_names"
android:entryValues="@array/sort_clauses"
android:dialogTitle="Choose a sort order" />
<CheckBoxPreference
android:key="alarm"
android:title="Sound a Lunch Alarm"
android:summary="Check if you want to know when it is time for lunch" />
<apt.tutorial.TimePreference
android:key="alarm_time"
android:title="Lunch Alarm Time"
android:defaultValue="12:00"
android:summary="Set your desired time for the lunch alarm"
android:dependency="alarm" />
<CheckBoxPreference
android:key="use_notification"
android:title="Use a Notification"
android:defaultValue="true"
android:summary="Check if you want a status bar icon at lunchtime, or uncheck for a full-screen notice"
android:dependency="alarm" />
</PreferenceScreen>

有人知道我哪里出错了吗?

谢谢!


更新

Here is a link to a project包含此自定义首选项和演示问题的简单首选项 XML 文件。即使只有两个 Java 类、首选项 XML 和一个 arrays.xml 文件,我也得到了这种现象。 Here is a compiled APK来自这个项目。

最佳答案

(来自 associated android-developers thread 的交叉发布)

好的,我想通了。

Preference 上有三种可能的构造函数:

MyPreference(Context ctxt)
MyPreference(Context ctxt, AttributeSet attrs)
MyPreference(Context ctxt, AttributeSet attrs, int defStyle)

沿着这条线的某个地方,我拿起了模式一参数构造函数链到二参数构造函数(为第二个参数传递 null ),并具有两个参数构造函数链到三参数构造函数(将 0 传递给第三个参数)。

这不是正确的答案。

我希望正确的答案是只实现第二个构造函数,因为正确的默认样式是 Android 内部的(com.android.internal.R.attr.dialogPreferenceStyle)。第二构造函数是用于膨胀首选项 XML 的。

感谢大家的帮助!

关于android - 自定义首选项,targetSdkVersion ="11": missing indent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5757012/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com