Пользовательское предпочтение, targetSdkVersion = «11»: отсутствует отступ?

У меня есть несколько нестандартных DialogPreference реализаций, таких как эта :

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 предпочтений ничем не примечателен, за исключением ссылки на вышеупомянутый класс:


    
    
    
    

Кто-нибудь знает, где я ошибаюсь?

Спасибо!


ОБНОВЛЕНИЕ

Вот ссылка на проект , который содержит это пользовательское предпочтение и простой XML-файл предпочтений, демонстрирующий проблему. Даже имея всего два Java-класса, XML-предпочтение и файл array.xml , я получаю это явление. Это скомпилированный APK из этого проекта.

18
задан Programmer Bruce 29 May 2011 в 07:39
поделиться