Java HoloEverywhere覆盖ActionBarSherlock';s主题,夏洛克

Java HoloEverywhere覆盖ActionBarSherlock';s主题,夏洛克,java,android,actionbarsherlock,Java,Android,Actionbarsherlock,这种bug就像一种黑魔法: 我正在尝试移植以完成Holo风格(默认情况下,它只有ICS timepicker小部件,对话框保持在蜂巢前) 我用时间选择器的特殊属性扩展了Theme.Sherlock,然后将其应用于整个应用程序。对话框的外观与默认设置相同(如上所述)。在那之后,我只是将HoloEverywhere库添加到项目中。。。黑魔法出现了!Timepicker小部件不知何故丢失了一些视图,比如蓝线,并改变了对话框中的位置。我仍然想知道这个小故障的原因 注意:在我的项目(代码)以及时间选择器库

这种bug就像一种黑魔法:

我正在尝试移植以完成Holo风格(默认情况下,它只有ICS timepicker小部件,对话框保持在蜂巢前)

我用时间选择器的特殊属性扩展了Theme.Sherlock,然后将其应用于整个应用程序。对话框的外观与默认设置相同(如上所述)。在那之后,我只是将HoloEverywhere库添加到项目中。。。黑魔法出现了!Timepicker小部件不知何故丢失了一些视图,比如蓝线,并改变了对话框中的位置。我仍然想知道这个小故障的原因

注意:在我的项目(代码)以及时间选择器库中,我完全没有得到任何关于时间的信息

注意:我还更改了timepicker中的一些属性,因为它们与HoloEverywhere的属性冲突(因为“…属性已声明”错误)

代码:


如果我理解正确,您需要全息式时间选择器和数字选择器。您可以使用不需要SimonVT的组件解决方案很棘手:我将HoloEverywhere添加到

1) 数字比克库 2) 时间选择器库 3) 时间选择器对话框库 4) 我的项目


但我仍然对此不满意,因为解决方案与问题一样不明确

我只是更喜欢ICS的对话,而不是在HoloEverywhere中移植的JellyBean。这就是我移植独立对话框的原因
public class DialogSample extends SherlockFragmentActivity implements OnTimeSetListener {

    private TextView mTimeDisplay;

    private int mHour;
    private int mMinute;

    static final int TIME_DIALOG_ID = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dialog);

        final Calendar c = Calendar.getInstance();
        mHour = c.get(Calendar.HOUR_OF_DAY);
        mMinute = c.get(Calendar.MINUTE);

        mTimeDisplay = (TextView) findViewById(R.id.timeDisplay);

        findViewById(R.id.btnDialog).setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                DialogFragment newFragment = new TimePickerFragment();
                newFragment.show(getSupportFragmentManager(), "timePicker");    
            }
        });

        updateDisplay();
    }

    // updates the time we display in the TextView
    private void updateDisplay() {
        mTimeDisplay.setText(
                new StringBuilder()
                        .append(pad(mHour)).append(":")
                        .append(pad(mMinute)));
    }

    private static String pad(int c) {
        if (c >= 10) {
            return String.valueOf(c);
        } else {
            return "0" + String.valueOf(c);
        }
    }






    static public class TimePickerFragment extends SherlockDialogFragment {

        @Override
        public TimePickerDialog onCreateDialog(Bundle savedInstanceState) {
            // Use the current date as the default date in the picker
            final Calendar c = Calendar.getInstance();
            int hour = c.get(Calendar.HOUR_OF_DAY);
            int minute = c.get(Calendar.MINUTE);


            return new TimePickerDialog(getSherlockActivity(), (DialogSample)getSherlockActivity(), hour, minute, true);
        }

        public TimePickerFragment() {

        }

    }


    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
         mHour = hourOfDay;
         mMinute = minute;
         updateDisplay();

    }
}