Jam*_*mes 44 android android-layout
在我的设置屏幕上,我有一个日期选择器小部件.在Eclipse中的设计器中,它显示为我想要的(DMY的3个微调器),但是当我在我的设备上进行测试时,我得到一个相当奇怪的视图,左边有一个侧面旋转器,右边是一个日历.从来没有见过这个(!),但做了一些研究,我想我正在看"CalendarView".
我发现我应该能够将"calendarViewShown"属性设置为false-但是我的XML会引发错误.我在这里发现另一个问题,建议API级别是责备(我的minSDKLevel是7,但我的目标是11,所以我可以得到操作栏按钮而不是oldskool菜单).所以我想我会尝试在代码中设置它:
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
if (currentapiVersion >= 11)
minDateSelector.setCalendarViewShown = false;
Run Code Online (Sandbox Code Playgroud)
但是,再次找不到这个失败的setCalendarViewShown.但是这里的文档说它应该存在.有任何想法吗?!
小智 96
如果您的目标是更高版本的API,则可以在以下版本中使用以下XML(无需编写Java代码)<DatePicker>:
android:calendarViewShown="false"
Run Code Online (Sandbox Code Playgroud)
tor*_*ech 32
DatePicker中的方法
public void setCalendarViewShown (boolean shown)
Run Code Online (Sandbox Code Playgroud)
存在从API 11开始.如果你minSdkLevel = 7,编译器不会将其识别为有效方法 - 该方法在android 2.3或2.2上不存在.最好的方法是解决这个问题,使用反射.这样的东西应该正常工作:
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
if (currentapiVersion >= 11) {
try {
Method m = minDateSelector.getClass().getMethod("setCalendarViewShown", boolean.class);
m.invoke(minDateSelector, false);
}
catch (Exception e) {} // eat exception in our case
}
Run Code Online (Sandbox Code Playgroud)
Sca*_*a09 14
我使用以下XML配置:
android:datePickerMode="spinner"
android:calendarViewShown="false"
Run Code Online (Sandbox Code Playgroud)
只有以下配置对我不起作用:
android:calendarViewShown="false"
Run Code Online (Sandbox Code Playgroud)
mar*_*rco 10
在那些情况下我使用
import android.os.Build;
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public void someThing() {
[...]
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
minDateSelector.setCalendarViewShown(false);
}
}
Run Code Online (Sandbox Code Playgroud)
我认为可读性比使用反射更好,样式比catch更好,忽略异常.当然,反思也是有效的.
小智 5
我遇到了和你一样的问题,我无法通过XML显示更改.
您走在正确的轨道上,尝试将最后一行更改为:
minDateSelector.setCalendarViewShown(false);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45689 次 |
| 最近记录: |