- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
编辑/注:我真的需要一个答案,我想继续使用“股票”谷歌 Android API。我已经为此创建了 +100 的赏金,但如果我在接下来的几天内使用股票 API 得到一个简单的解决方案,我将再添加 +100,使其值(value) 200 分。
我正在试验 Android CalendarView 控件。我在 NestedScrollView 中制作了一个带有按钮和 CalendarView 的小应用程序。我把按钮和它的边距做得很大,所以我可以验证滚动是否有效。在运行 Android 6.01 的三星 Galaxy S5 上运行良好。但是在运行 4.2.2 的 Samsung S Duo(这是我的预期目标)上,无法提前月份( 注意月份旁边没有箭头 )
这是运行 Android 6.01 的三星 S5 的屏幕截图
这是运行 4.2.2 的三星 Duo 中的一个
content_main.xml 看起来像这样。 . .
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- This linear layout is because the scrollview can have only 1 direct child -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/recordEnd"
android:layout_width="200dp"
android:layout_height="100dp"
android:layout_marginTop="100dp"
android:layout_marginBottom="100dp"
android:gravity="center"
android:text="Record End"/>
<CalendarView
android:id="@+id/thecalendar"
android:layout_width="240dp"
android:layout_height="300dp"
android:minDate="01/01/2016"
android:maxDate="11/30/2016"/>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
最佳答案
来自 Iulian Popescu 的精彩而深刻的解释,我只是想简化它。首先,我想澄清一些事情。
CalenderView
的准确外观和交互模型小部件可能因操作系统版本和主题而异(例如 Holo 与 Material)。 android.widget.CalendarView
的代码时Android类,你可以看到CalendarViewLegacyDelegate
class 负责在 HOLO
的情况下呈现 CalenderView主题和 CalendarViewMaterialDelegate
class 负责在 MATERIAL
的情况下呈现 CalenderView主题。我再次发布该代码仅供引用。 public CalendarView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
final TypedArray a = context.obtainStyledAttributes(
attrs, R.styleable.CalendarView, defStyleAttr, defStyleRes);
final int mode = a.getInt(R.styleable.CalendarView_calendarViewMode, MODE_HOLO);
a.recycle();
switch (mode) {
case MODE_HOLO:
mDelegate = new CalendarViewLegacyDelegate(
this, context, attrs, defStyleAttr, defStyleRes);
break;
case MODE_MATERIAL:
mDelegate = new CalendarViewMaterialDelegate(
this, context, attrs, defStyleAttr, defStyleRes);
break;
default:
throw new IllegalArgumentException("invalid calendarViewMode attribute");
}
}
CalendarViewMaterialDelegate
(android.widget.CalendarViewMaterialDelegate) 类我们可以看到 DayPickerView
(android.widget.DayPickerView) 类作为容器来渲染我们在 Material 主题中可以看到的日历 View 。在 DayPickerView
类(class)ViewPager
用于在一页中显示一个月。还有两个ImageButton
对于下一个和上一个。由于有两个按钮可以更改月份,因此不会产生任何问题并且在 MATERIAL
中工作正常。主题。 private final ViewPager mViewPager;
private final ImageButton mPrevButton;
private final ImageButton mNextButton;
CalendarViewLegacyDelegate
中看到的那样(android.widget.CalendarViewLegacyDelegate) 类,ListView
用于在 CalenderView
中显示周列表(垂直滚动) .上一个和下一个没有任何 ImageButton,因为它会垂直滚动。 /**
* The adapter for the weeks list.
*/
private WeeksAdapter mAdapter;
/**
* The weeks list.
*/
private ListView mListView;
ScrollView
与
ListView
, 因为
ListView
照顾自己的垂直滚动。因此,在
HOLO
的情况下主题
CalenderView
在
ScrollView
中使用它时会出现意外行为.
NestedScrollView
类。它将使您的
CalenderView
在
HOLO
的情况下垂直滚动平滑主题。
public class VerticalScrollView extends ScrollView{
public VerticalScrollView(Context context) {
super(context);
}
public VerticalScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public VerticalScrollView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
final int action = ev.getAction();
switch (action)
{
case MotionEvent.ACTION_DOWN:
super.onTouchEvent(ev);
break;
case MotionEvent.ACTION_MOVE:
return false; // redirect MotionEvents to ourself
case MotionEvent.ACTION_CANCEL:
super.onTouchEvent(ev);
break;
case MotionEvent.ACTION_UP:
return false;
default:
break;
}
return false;
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
super.onTouchEvent(ev);
return true;
}
}
关于android - 箭去哪儿了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38233997/
我通常将JS和CSS Assetic Assets 放置在DefaultBundle中,但我认为放置它们的最佳位置是在app / Resources / public /(js | css)文件夹中。
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我是一名优秀的程序员,十分优秀!