Android中的CalendarView在模拟器中运行良好,但在设备上完全不同

时间:2016-09-17 09:14:53

标签: java android calendar emulation

编辑:它已经修复了!解决方案是更新我的设备,以便API与模拟器匹配。事后似乎显而易见,但我认为较低的API开发目标可以避免这个问题。感谢您的提示!

我正在开发一个简单的应用程序,它使用日历来切换您想要查看的指南的哪个部分。在模拟器中,我将这个漂亮的日历放在顶部,底部是文本。

然而,当我在我的设备上运行该应用程序时,日历会爆炸到所有可能的月份,而且任何地方都没有文字!

有什么方法可以强制我们使用更紧凑的日历版本吗?

(我没有足够的代表来发布图片,因此这是一张展示我问题的imgur专辑。http://imgur.com/a/4SSvo

模拟器是API23,Device是API22。该项目正在为API14开发,这真的是问题吗?

这是CalendarView的.xml

<CalendarView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/calendarView"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:minDate="04/06/2009"
        android:maxDate="01/31/2010"
        android:fitsSystemWindows="true"
        />

在.java文件中,我有一个更改文本的监听器。

protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

/*
irrelevant code
*/
        calendar = (CalendarView)findViewById(R.id.calendarView);       
/*
more irrelevant code
*/
        calendar.setOnDateChangeListener(this);
    }

@Override
    public void onSelectedDayChange(CalendarView calendarView, int i, int     i1, int i2) { // year, month, day

        int j = 1;
        boolean found = false;
        while((j < allDays.length-1) && !found)
        {
            if((allDays[j].getMonth() == i1+1) && (allDays[j].getDay() == i2))
            {
                found = true;
            }
        else
            {
                j++;
            }
        }
        if(found)
        {
            index = j;
            changeText.setText(allDays[j].getGuide());
            adjustSize();
        }
        else
        {
            changeText.setText("No action today");
        }
    }

希望这是足够的信息。

0 个答案:

没有答案