我正在参加CSDN 2016博客之星评选,希望得到您的宝贵一票~
http://blog.csdn.net/vote/candidate.html?username=iwanghang
请为我投票,谢谢 ~~
如果没有CSDN账号 直接使用微信/QQ/微博登陆 就能投票了~~
这2天,为了实现CustomTitleView在ScrollView的LinearLayout中,无法显示,或者说是高度为0的问题,一直在寻求答案,或许这就是进步的预兆吧。
想了很多办法,最终都没有实现,思路就不说了,免得误导大家,容我再研究一段时间,争取找到动态实例化CustomView,以及ScrollView下正确获取CustomView高度的方法。
这边贴一个ScrollView的中文API,这是我在尝试的时候,顺便翻译的,虽然暂时没有用处,还是在博文里Backup一下好了。
/** * 如果按下状态应该推迟这个ViewGroup的孩子或子孙返回true。一般来说,这应该是为可以滚动的容器,如列表。 * 当用户实际上正在试图滚动内容时,这阻止了压缩状态的出现。默认实现返回真实的兼容性原因。 * 不滚动的子类一般应重写此方法,并返回错误的。 */ public boolean shouldDelayChildPressedState() { throw new RuntimeException("Stub!"); } /** * 返回顶部边缘的强度或强度。的强度是一个值之间的0(不褪色)和1(完全褪色)。默认实现返回1或0, * 但没有值之间的。 * 子类应重写此方法,以提供一个平滑的淡出过渡时,滚动发生。 */ protected float getTopFadingEdgeStrength() { throw new RuntimeException("Stub!"); } /** * 返回顶部边缘的强度或强度。的强度是一个值之间的0(不褪色)和1(完全褪色)。默认实现返回1或0, * 但没有值之间的。 * 子类应重写此方法,以提供一个平滑的淡出过渡时,滚动发生。 */ protected float getBottomFadingEdgeStrength() { throw new RuntimeException("Stub!"); } /** * 此滚动视图的最大金额将在响应箭头事件滚动时滚动。 */ public int getMaxScrollAmount() { throw new RuntimeException("Stub!"); } /** * 添加一个子视图。如果没有布局参数已设置的孩子,这个ViewGroup默认的参数设置对孩子。 * @param child 要添加的子视图 */ public void addView(View child) { throw new RuntimeException("Stub!"); } /** * 添加一个子视图。如果没有布局参数已设置的孩子,这个ViewGroup默认的参数设置对孩子。 * @param child 要添加的子视图 * @param index 添加子的位置 */ public void addView(View child, int index) { throw new RuntimeException("Stub!"); } /** * 将带有指定的布局参数的子视图添加。 * @param child 要添加的子视图 * @param params 设置在子上的布局参数 */ public void addView(View child, LayoutParams params) { throw new RuntimeException("Stub!"); } /** * 将带有指定的布局参数的子视图添加。 * @param child 要添加的子视图 * @param index 添加子的位置 * @param params 设置在子上的布局参数 */ public void addView(View child, int index, LayoutParams params) { throw new RuntimeException("Stub!"); } /** * 这是否表明scrollview' S高兴是直体填写the视区。 * 如果内容充满视口真,否则为假。 */ public boolean isFillViewport() { throw new RuntimeException("Stub!"); } /** * 表明该滚动视图是否应该延伸其内容高度填充视图或不。 * fillViewport 真正的把内容的高度视口的边界,否则为假。 */ public void setFillViewport(boolean fillViewport) { throw new RuntimeException("Stub!"); } /** * 是否箭头滚动将动画其过渡。 */ public boolean isSmoothScrollingEnabled() { throw new RuntimeException("Stub!"); } /** * 设置是否箭头滚动将动画其过渡。 * smoothScrollingEnabled 是否箭头滚动将动画其过渡 */ public void setSmoothScrollingEnabled(boolean smoothScrollingEnabled) { throw new RuntimeException("Stub!"); } /** * 测量视图及其内容,以确定测量的宽度和测量的高度。这种方法是通过测量(int,int)应该被子类提供准确、高效的测量的内容。 * 重写此方法时,你必须调用setmeasureddimension(int,int)来存储测量宽度和高度这一观点。如果不这样做会触发时,被测量(int,int)。调用父类的onMeasure(int,int)是一个有效的使用。 * 测量默认背景大小的基类的实现,除非有更大的大小是由measurespec允许。子类应重写onMeasure(int,int)提供更好的对其含量的测定。 * 如果这个方法被重写,它是类的责任,以确保测量的高度和宽度至少是视图的最小高度和宽度(getsuggestedminimumheight()和getsuggestedminimumwidth())。 * @param widthMeasureSpec 由父所施加的水平空间要求。的要求进行编码和View.MeasureSpec。 * @param heightMeasureSpec 由父所施加的垂直空间要求。的要求进行编码和View.MeasureSpec。 */ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { throw new RuntimeException("Stub!"); } /** * 调度焦点路径上的下一个视图的一个关键事件。此路径从视图树的顶部向下运行到当前集中的视图。如果这种观点有焦点,它将派遣自己。否则它将调度下一个节点的焦点路径。此方法还激发任何密钥侦听器。 * @param event 要发送的关键事件。 * @return 如果我真的handled otherwise the event,虚假。 */ public boolean dispatchKeyEvent(KeyEvent event) { throw new RuntimeException("Stub!"); } /** * 您可以调用此函数自己有滚动视图执行从一个关键事件滚动,就像事件已被发送到它的视图层次结构。 * @param event 执行的关键事件。 * @return 如果事件被处理,则返回真实的,否则错误的。 */ public boolean executeKeyEvent(KeyEvent event) { throw new RuntimeException("Stub!"); } /** * 当一个孩子不想父母和祖先拦截触摸事件与onintercepttouchevent(位移事件)。 * 这个家长应该把这个电话传给它的父母。此父必须遵守此请求的持续时间(即,只有清除该标志后,这一家长已收到了一个或取消。 * @param disallowIntercept 如果孩子不想家长拦截触摸事件。 */ public void requestDisallowInterceptTouchEvent(boolean disallowIntercept) { throw new RuntimeException("Stub!"); } /** * 实现这种方法来拦截所有的触摸屏运动事件。这允许你观察事件,因为他们被发送给你的孩子,并采取在任何时候在任何一点上的当前的姿态。 * 使用此功能需要一些照顾,因为它有一个相当复杂的相互作用的观点。onTouchEvent(位移事件),并用它需要实现方法以及这一正确的方法。事件将按以下顺序接收: * 1.您将在这里接收到的事件。 * 2.下来的事件将处理由这种观点的一个组的孩子,或给自己的ontouchevent()法处理;这意味着你应该实现ontouchevent()返回true,那么你将继续看到这种姿态的休息 * (而不是寻找父视图来处理)。同时,通过ontouchevent()返回true,您将不会收到任何以下事件在onintercepttouchevent()所有触摸处理必须在ontouchevent()像正常的发生。 * 3.只要你从这个函数返回false,每个事件(包括到最后了)将交付第一这里然后到目标的ontouchevent()。 * 4.如果你还真在这里,你将不会收到任何以下事件:目标视图将收到相同的事件却用行动action_cancel,所有进一步的事件将被送到你的ontouchevent()方法不再出现在这里。 * @param ev 被发送的层次结构的运动事件。 * @return 还真从孩子偷运动事件和他们派遣到这个ViewGroup通过ontouchevent()。当前的目标将收到一action_cancel事件,并没有进一步的消息会被送到这里。 */ public boolean onInterceptTouchEvent(MotionEvent ev) { throw new RuntimeException("Stub!"); } /** * 实现此方法来处理触摸屏运动事件。 * 如果这个方法被用于检测单击操作,建议的行动被performclick()进行实现和调用。这将确保一致的系统行为,包括: * 1.obeying点击声音的偏好 * 2.onclicklistener调度calls * 3.当处理ACTION_CLICK特点是功能性的 * @param ev 运动事件。 * @return 如果我真的handled otherwise the event,虚假。 */ public boolean onTouchEvent(MotionEvent ev) { throw new RuntimeException("Stub!"); } /** * 实现这种方法来处理通用的运动事件。 * 一般的运动事件描述的操纵杆移动,鼠标,触控板的触摸,滚轮运动和其他的输入事件。运动事件的源指定接收的输入类。此方法的实现必须在处理事件之前检查源中的位。下面的代码示例演示了如何完成这一。 * 一般的运动事件源类 SOURCE_CLASS_POINTER 传递到指针下的视图。所有其他的通用运动事件都传递到集中视图。 * @param event 正在处理的通用运动事件。 * @return 如果我真的handled otherwise the event,虚假。 */ public boolean onGenericMotionEvent(MotionEvent event) { throw new RuntimeException("Stub!"); } /** * Called by overScrollBy(int, int, int, int, int, int, int, int, boolean) to respond to the results of an over-scroll operation. * @param scrollX 新的X滚动像素值 * @param scrollY 新的Y滚动像素值 * @param clampedX 如果scrollx夹住过卷边 * @param clampedY 如果scrolly夹住过卷边 */ protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) { throw new RuntimeException("Stub!"); } /** * 在视图上执行指定的可访问性操作。可能的可及性行为看 AccessibilityNodeInfo 。 * 如果 View.AccessibilityDelegate 已通过指定的Call setAccessibilityDelegate(AccessibilityDelegate) 其 performAccessibilityAction(View, int, Bundle) 负责处理 Call。 * @param action 执行的行动。 * @param arguments 可选动作参数。 * @return 是否执行该动作。 */ public boolean performAccessibilityAction(int action, Bundle arguments) { throw new RuntimeException("Stub!"); } /** * 关于这一观点的初始化信息accessibilitynodeinfo。基本实现集: * setParent(View), * setBoundsInParent(Rect), * setBoundsInScreen(Rect), * setPackageName(CharSequence), * setClassName(CharSequence), * setContentDescription(CharSequence), * setEnabled(boolean), * setClickable(boolean), * setFocusable(boolean), * setFocused(boolean), * setLongClickable(boolean), * setSelected(boolean), * 子类应重写此方法,调用超级实现,并设置附加属性。 * 如果一个 View.AccessibilityDelegate 已通过指定的Call setAccessibilityDelegate(AccessibilityDelegate) * 其 onInitializeAccessibilityNodeInfo(View, AccessibilityNodeInfo) 负责处理 Call 。 * @param info 初始化实例。 */ public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { throw new RuntimeException("Stub!"); } /** * 对这一观点是初始化一个AccessibilityEvent事件源信息。换言之,可访问性事件的来源是状态变化触发事件触发的视图。 * 有例子,请在 http://www.android-doc.com/reference/android/widget/ScrollView.html 查看。 * 如果一个 View.AccessibilityDelegate 已通过指定的电话 setAccessibilityDelegate(AccessibilityDelegate) 其 onInitializeAccessibilityEvent(View, AccessibilityEvent) 负责处理 Call。 * 注意:在添加信息到事件之前总是调用超级实现,在默认情况下,默认实现有基本的信息添加。 * @param event 事件初始化。 */ public void onInitializeAccessibilityEvent(AccessibilityEvent event) { throw new RuntimeException("Stub!"); } /** * 在响应“向上/向下”快捷键的响应中滚动。该方法将滚动视图由一个向上或向下翻页,给在新的可见区域的最高/最低分的焦点。如果没有组件是一个很好的候选人,这个焦点,ScrollView回收的重点。 * @param direction 滚动方向:focus_up去一页一页或focus_down走下来 * @return 如果该方法所消耗的密钥事件,则为假 */ public boolean pageScroll(int direction) { throw new RuntimeException("Stub!"); } /** * 处理滚动响应一个“home/end”快捷键。该方法将滚动视图的顶部或底部,将焦点在新的可见区域的最高/最低分。如果没有组件是一个很好的候选人,这个焦点,ScrollView回收的重点。 * @param direction 滚动方向:focus_up去查看或focus_down去底部 * @return 如果该方法所消耗的密钥事件,则为假 */ public boolean fullScroll(int direction) { throw new RuntimeException("Stub!"); } /** * 单击向上或向下箭头响应的响应滚动。 * @param direction 被按下的箭头键的方向 * @return 真的如果我们使用事件,否则假的 */ public boolean arrowScroll(int direction) { throw new RuntimeException("Stub!"); } /** * 像scrollBy(int,int),但平稳的滚动而不是立即。 * @param dx 在x轴上滚动的像素的数量 * @param dy 在Y轴上滚动的像素的数量 */ public final void smoothScrollBy(int dx, int dy) { throw new RuntimeException("Stub!"); } /** * 像scrollto(int,int),但平稳的滚动而不是立即。 * @param x 在X轴上滚动的位置 * @param y 在Y轴上滚动的位置 */ public final void smoothScrollTo(int x, int y) { throw new RuntimeException("Stub!"); } /** * 滚动视图的滚动范围是所有它的子视图的整体高度。 * @return 通过垂直滚动条为代表的总垂直范围。默认范围是该视图的绘图高度。 */ protected int computeVerticalScrollRange() { throw new RuntimeException("Stub!"); } /** * 计算的垂直滚动条上的滑块垂直偏移水平范围内。这个值是用来计算拇指的位置在滚动条上的轨道。 * 范围表示在任意的单位,必须按照 computeVerticalScrollRange() 和 computeVerticalScrollExtent() 单位使用相同的。 * 默认的偏移量是该视图的滚动偏移量。 * @return 在滚动条上的滑块垂直偏移 */ protected int computeVerticalScrollOffset() { throw new RuntimeException("Stub!"); } /** * 提出这一观点的孩子来衡量自己,既考虑到 MeasureSpec 要求这一观点及其填充。重是在 getChildMeasureSpec 。 * @param child 孩子测量 * @param parentWidthMeasureSpec 此视图的宽度要求 * @param parentHeightMeasureSpec 此视图的高度要求 */ protected void measureChild(View child, int parentWidthMeasureSpec, int parentHeightMeasureSpec) { throw new RuntimeException("Stub!"); } /** * 提出这一观点的孩子来衡量自己,既考虑到 MeasureSpec 要求这一观点及其填充和边缘。孩子必须有 MarginLayoutParams 重做 getChildMeasureSpec。 * @param child 孩子测量 * @param parentWidthMeasureSpec 此视图的宽度要求 * @param widthUsed 父水平使用的额外空间(可能是由父的其他子) * @param parentHeightMeasureSpec 此视图的高度要求 * @param heightUsed 父垂直使用的额外空间(可能是由父的其他子) */ protected void measureChildWithMargins(View child, int parentWidthMeasureSpec, int widthUsed, int parentHeightMeasureSpec, int heightUsed) { throw new RuntimeException("Stub!"); } /** * 一个家长打电话来要求孩子更新它的值,如果有必要 mScrollX mScrollY。这通常是如果孩子在使用滚动条滚动物体。 */ public void computeScroll() { throw new RuntimeException("Stub!"); } /** * 计算在Y方向上滚动的数量,以获得一个矩形完全在屏幕上(或,如果比屏幕高,至少第一个屏幕大小的块)。 * @param rect 矩形。 * @return 滚动变量增量。 */ protected int computeScrollDeltaToGetChildRectOnScreen(Rect rect) { throw new RuntimeException("Stub!"); } /** * 当一个孩子的父母想要的焦点 * @param child 这个ViewParent要聚焦孩子。此视图将包含聚焦视图。它不一定是真正有焦点的观点。 * @param focused 实际上有焦点的孩子的后代的观点 */ public void requestChildFocus(View child, View focused) { throw new RuntimeException("Stub!"); } /** * 当寻找一个滚动查看孩子的重点,要小心一点儿不给重点的东西是滚动出屏幕。这是不是默认的ViewGroup实现更贵,否则这种行为可能已经默认。 * @param direction One of FOCUS_UP, FOCUS_DOWN, FOCUS_LEFT, and FOCUS_RIGHT * @param previouslyFocusedRect 矩形(在这个视图的坐标系统)给一个更细的纹理提示焦点是从哪里来的。可能是无效的,如果没有提示。 * @return 是否重点采取。 */ protected boolean onRequestFocusInDescendants(int direction, Rect previouslyFocusedRect) { throw new RuntimeException("Stub!"); } /** * 当这个组的一个孩子想要一个特定的矩形被放置在屏幕上。ViewGroups重写该可以相信: * 孩子将是这个群体的一个直接的孩子 * 矩形将在孩子的坐标 * ViewGroups重写此应该坚持合同: * 如果矩形已经可见,没有什么会改变 * 查看端口将滚动才足以使矩形可见 * @param child 直接孩子的要求。 * @param rectangle 孩子的坐标中的矩形的孩子希望在屏幕上。 * @param immediate 真正禁止动画或延迟滚动,否则虚假 * @return 本集团是否滚动处理操作 */ public boolean requestChildRectangleOnScreen(View child, Rect rectangle, boolean immediate) { throw new RuntimeException("Stub!"); } /** * 把这当事情已经发生了变化,则这种观点的布局。这将安排视图树的布局通过。这不应该是在视图层次结构是目前在布局过程称为 isinlayout()。 * 如果布局正在发生,请求可能会在当前的布局结束后兑现(然后再重新布局)或在当前的框架被绘制和下一个布局发生。 * 子类重写此方法应该调用父类的方法来处理请求期间的布局错误正确 */ public void requestLayout() { throw new RuntimeException("Stub!"); } /** * 当视图从一个窗口中分离时,这个调用被调用。在这一点上,它不再有一个绘图表面。 */ protected void onDetachedFromWindow() { throw new RuntimeException("Stub!"); } /** * 从布局调用时,这个视图应该分配一个大小和位置给每一个孩子。派生类与儿童应重写此方法,并调用每个他们的孩子的布局。 * @param changed 对于这种视图,这是一个新的大小或位置 * @param l 左位置,相对于父 * @param t 顶部位置,相对于父 * @param r 右位置,相对于父 * @param b 底部位置,相对于父 */ protected void onLayout(boolean changed, int l, int t, int r, int b) { throw new RuntimeException("Stub!"); } /** * 这是在布局时,这个视图的大小发生了变化。如果您只是添加到视图层次结构中,您将被调用与旧值为0。 * @param w 此视图的当前宽度。 * @param h 此视图的当前高度。 * @param oldw 此视图的老宽度。 * @param oldh 这一观点的老高度。 */ protected void onSizeChanged(int w, int h, int oldw, int oldh) { throw new RuntimeException("Stub!"); } /** * 滚动滚动视图 * @param velocityY 在Y方向上的初始速度。积极的数字意味着手指/光标正在向下移动屏幕,这意味着我们要向顶部滚动。 */ public void fling(int velocityY) { throw new RuntimeException("Stub!"); } /** * 设置滚动位置您的视图。这将导致onScrollChanged(int,int,int,int)和视图将失效。 * 这个版本还夹的滚动到我们的孩子的界限。 * @param x X位置滚动到 * @param y Y位置滚动到 */ public void scrollTo(int x, int y) { throw new RuntimeException("Stub!"); } /** * 设置此视图的过滚动模式。有效 OVER_SCROLL_ALWAYS 滚动模式(默认), OVER_SCROLL_IF_CONTENT_SCROLLS(允许在滚动只有查看内容大于容器), * 或over_scroll_never。设置一个视图的过滚动模式将有一个效果,只有当视图能够滚动。 * @param mode 此视图的新的超滚动模式。 */ public void setOverScrollMode(int mode) { throw new RuntimeException("Stub!"); } /** * 手动将此视图(和所有的子视图)渲染给给定的画布。视图必须在这个函数被调用之前已经做了一个完整的布局。当实现一个视图,实现OnDraw(android.graphics.Canvas) * (Android.图形.画布)而不是重写该方法。如果你需要重写该方法,调用父类的版本。 * @param canvas 渲染视图所呈现的画布。 */ public void draw(Canvas canvas) { throw new RuntimeException("Stub!"); }
转载请注明出处: http://blog.csdn.net/iwanghang/
欢迎移动开发爱好者交流
沈阳或周边城市公司有意开发Android,请与我联系
联系方式
微信:iwanghang
QQ:413711276
邮箱:iwanghang@qq.com
沈阳或周边城市公司有意开发Android,请与我联系
联系方式
微信:iwanghang
QQ:413711276
邮箱:iwanghang@qq.com
绝对博文有用,请点赞,请留言,谢谢!~