日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android中文api(85)——HorizontalScrollView

發布時間:2023/12/4 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android中文api(85)——HorizontalScrollView 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

前言

  本章內容是android.widget.HorizontalScrollView,譯為"橫向滾動條",版本為Android 2.3 r1,翻譯來自"Tina",感謝"Tina"為大家帶來精彩的翻譯稿 !期待你加入Android API 中文的翻譯,聯系我over140@gmail.com。

?

聲明

  歡迎轉載,但請保留文章原始出處:)

    博客園:http://www.cnblogs.com/

    Android中文翻譯組:http://goo.gl/6vJQl

?

正文

  一、結構

public class HorizontalScrollView extends FrameLayout

????????

java.lang.Object

android.view.View

???????? android.view.ViewGroup

?????????????????? android.widget.FrameLayout

??????????????????????????? android.widget.HorizontalScrollView

?

  二、概述

      

  用于布局的容器,可以放置讓用戶使用滾動條查看的視圖層次結構,允許視圖結構比手機的屏幕大。HorizontalScrollView是一種FrameLayout(框架布局),其子項被滾動查看時是整體移動的,并且子項本身可以是一個有復雜層次結構的布局管理器。一個常見的應用是子項在水平方向中,用戶可以滾動顯示頂層水平排列的子項(items)

  HorizontalScrollView不可以和ListView同時用,因為ListView有自己的滾動條設置。最重要的是,如果在需要顯示很大的list的情況下,兩者同時用則會使ListView在一些重要的優化上失效。出現這種失效的原因在于,HorizontalScrollView會強迫ListViewHorizontalScrollView本身提供的空間容器(infinite container)來顯示完整的列表。

?  類似的情況,TextView也有自己的滾動條,所以不需要ScrollView。但這兩者是可以同時使用的,使用的結果會是在一個更大的容器里顯示文本視圖。

    HorizontalScrollView只支持水平方向的滾動顯示。

?

  三、公共方法

public void addView (View child)

添加一個子視圖。若這個子視圖沒有被設置布局參數,則使用ViewGroup的缺省參數。

參數

child ??????? 要添加的子視圖

?

public void addView (View child, int index)

添加一個子視圖。若這個子視圖沒有被設置布局參數,則使用ViewGroup的缺省參數。

參數

child ??????? 要添加的子視圖

index ????? 子視圖要加入的位置

?

public void addView (View child, int index, ViewGroup.LayoutParams params)

添加一個帶有指定布局參數的子視圖。

參數

child ??????? 要添加的子視圖

index ????? 子視圖要加入的位置

params ?子視圖的布局參數

?

public void addView (View child, ViewGroup.LayoutParams params)

添加一個帶有指定布局參數的子視圖。

參數

child ??????? 要添加的子視圖

params ?子視圖的布局參數

?

public boolean arrowScroll (int direction)

響應點擊左右箭頭時對滾動條的處理。

參數

direction ???????? The direction corresponding to the arrow key that was pressed箭頭按鍵所表示的方向

返回值

??? ???????? 若此事件成功完成,則返回true;否則返回false

?

public void computeScroll ()

被父視圖調用,用于必要時候對其子視圖的值(mScrollXmScrollY)進行更新。典型的情況如:父視圖中某個子視圖使用一個Scroller對象來實現滾動操作,會使得此方法被調用。

?

public boolean dispatchKeyEvent (KeyEvent event)

按照可以獲得焦點的順序(從視圖樹的頂端到當前獲得焦點的視圖),分派一個按鍵事件給下一個視圖。若此視圖為焦點視圖,事件將會分派給它自己。否則它將按照順序,分派給下一個節點。此方法同時觸動所有按鍵監聽器。

參數

event ????? 被分派的事件.

返回值

??? ???????? 若事件被處理,則返回true;否則為false

?

public void draw (Canvas canvas)

手動繪制視圖(及其子視圖)到指定的畫布(Canvas)。這個視圖必須在調用這個函數之前做好了整體布局。。當實現一個視圖時,不需要繼承這個方法;相反,你應該實現onDraw(Canvas)方法。

參數

canvas ?? 繪制視圖的畫布

?

public boolean executeKeyEvent (KeyEvent event)

需要通過按鍵事件來實現滾動操作時,可以調用此方法。效果類似于由視圖樹型結構分派事件。

參數

event ????? 需要執行的事件

返回值

??? ???????? 若事件被處理,則返回true;否則為false

?

public void fling (int velocityX)

滾動視圖的fling手勢。

參數

velocityX ???????? 方向的初始速率。正值表示手指/光標向屏幕右邊滑動,而內容相對向左滾動。

?

public boolean fullScroll (int direction)

處理按下"home/end"快捷鍵之后的滾動響應。此方法會將視圖移左或移右,同時將焦點賦予移動后可視的最左或最右的組件。如果沒有任何組件適合得到焦點,此scrollview將收回焦點。

參數

direction ???????? 滾動方向:FOCUS_LEFT表示向視圖的左邊移動,FOCUS_RIGHT表示向視圖的右邊移動

返回值

??? ???????? 若此方法消耗(consumed)了按鍵事件則返回true,否則返回false

?

public int getMaxScrollAmount ()

返回值

??? ???????? 按左右箭頭時視圖可以滾動的最大值。

?

public boolean isFillViewport ()

表示此ScrollView的內容是否被拉伸以適應視口(viewport)的大小。

返回值

??? ???????? 若內容填充了視口則返回true,否則返回false

?

public boolean isSmoothScrollingEnabled ()

返回值

??? ???????? 按箭頭方向滾動時,是否顯示滾動的平滑效果。

?

public boolean onInterceptTouchEvent (MotionEvent ev)

使用此方法可以攔截所有觸摸屏動作引發的事件。這意味著你可以監視分派給子項的事件,并且可以拿到任何當前手勢的所有權。

使用此方法需謹慎。因為它與View.onTouchEvent(MotionEvent)有相當復雜的交互影響。這兩者都必須同時正確地實現。事件將按以下順序來被方法接收:

?? 1. 接收到down事件

?? 2. 事件將被視圖組的一個子視圖處理,或者被傳遞給自己的onTouchEvent()方法處理;這意味著你必須實現onTouchEvent(),并且返回true,這樣才可以接著接受到其他的手勢(而不是尋求一個父視圖來處理它)。onTouchEvent()返回true后,你將不再接受到onInterceptTouchEvent()的任何事件,同時所有對觸摸動作的處理必須像往常一樣在onTouchEvent()中進行。

?? 3. 如果返回false,則接下來的每個事件(所有的up事件,包含最后一個up將會首先被傳遞到這里,然后到目標對象viewonTouchEvent()

?? 4. 如果返回ture,你將不會接收到以下任何事件:目標view將會接收到相同的事件,但是帶著ACTION_CANCEL的動作。所有在此之后的事件將會被傳遞到你的onTouchEvent()方法中,并且不再在這里出現。

參數

ev ?? 沿著樹型結構往下分派的動作事件

???????? 返回值

??? ???????? 若將動作事件從子視圖中截獲并通過onTouchEvent()將他們分派給當前ViewGroup,則返回true。當前目標將收到一個ACTION_CANCEL事件,并且不再會有其他消息被傳遞到這里。

?

public boolean onTouchEvent (MotionEvent ev)

此方法用于處理觸摸屏的動作事件。

參數

ev ?? 動作事件

???????? 返回值

??? ???????? 若事件被成功處理,則返回true;否則返回false

?

public boolean pageScroll (int direction)

處理按下"page up/down"快捷鍵之后的滾動響應。此方法會將視圖往左或往右滾動一個頁面的距離,同時將焦點賦予移動后可視的最左或最右的組件。如果沒有任何組件適合得到焦點,此scrollview將收回焦點。

參數

direction ???????? 滾動方向:FOCUS_LEFT表示向視圖的左邊移動一個頁面FOCUS_RIGHT表示向視圖的右邊移動一個頁面

????? 返回值

??? ??????? 若此方法處理(consumed)了按鍵事件則返回true,否則返回false

?

public void requestChildFocus (View child, View focused)

當父視圖的一個子視圖要獲得焦點時,調用此方法。

參數

child ??????? 要獲得焦點的子視圖。此視圖將包含焦點視圖,但其本身不必為焦點。

focused ?事實上擁有焦點的子視圖的下層視圖。

?

public boolean requestChildRectangleOnScreen (View child, Rect rectangle, boolean immediate)

當組里的某個子視圖需要被定位在屏幕的某個矩形范圍時,調用此方法。重載此方法的ViewGroup可確認以下幾點:

??? * 子項目將是組里的直系子項

??? * 矩形將在子項目的坐標體系中

重載此方法的ViewGroup應該支持以下幾點:

??? * 若矩形已經是可見的,則沒有東西會改變

??? * 為使矩形區域全部可見,視圖將可以被滾動顯示

參數

child ??????? 發出請求的子視圖

rectangle ??????? 子項目坐標系內的矩形,即此子項目希望在屏幕上的定位

immediate ???? 設為true,則禁止動畫和平滑移動滾動條

????? 返回值

??? ??????? 進行了滾動操作的這個組(group),是否處理此操作

?

public void requestLayout ()

當出現使視圖布局失效的改變時,調用此方法。它將規劃一個視圖樹的布局路徑。

?

public void scrollTo (int x, int y)

設置視圖滾動后的位置。這將引起onScrollChanged(int,int,int,int)的調用,同時使此視圖失效。

此版本同時將滾動鎖定于子視圖的范圍。

參數

x ???? 要滾動到的x位置

y ???? 要滾動到的y位置

?

public void setFillViewport (boolean fillViewport)

設置此滾動視圖是否將內容寬度拉伸來適應視口(viewport)。

參數

fillViewport ??? 設置為true表示將拉伸內容寬度;否則會設置為false

?

public void setOverScrollMode (int mode)

為視圖設置over-scroll模式。有效的over-scroll模式有OVER_SCROLL_ALWAYS(缺省值),OVER_SCROLL_IF_CONTENT_SCROLLS(只允許當視圖內容大過容器時,進行over-scrolling)和OVER_SCROLL_NEVER。只有當視圖可以滾動時,此項設置才起作用。

參數

mode ????? 視圖的新over-scroll模式值

?

public void setSmoothScrollingEnabled (boolean smoothScrollingEnabled)

設置是否呈現按下箭頭后的平滑滾動效果(動畫效果)。

參數

smoothScrollingEnabled ???????? 設置是否呈現平滑滾動效果

?

public final void smoothScrollBy (int dx, int dy)

類似scrollBy(int, int),但是呈現平滑滾動,而非瞬間滾動(譯者注:瞬間滾動——指不顯示滾動過程,直接顯示滾動后達到的位置)。

參數

dx ?? 要滾動的X軸像素差值(譯者注:橫向像素差值)

dy ?? 要滾動的Y軸像素差值(譯者注:縱向像素差值)

?

public final void smoothScrollTo (int x, int y)

類似scrollTo(int, int),但是呈現平滑滾動,而不是瞬間滾動。

參數

x ???? 滾動要到達位置的X軸值

      y ???? 滾動要到達位置的Y軸值?

  四、受保護方法

????? protected int computeHorizontalScrollOffset ()

計算水平方向滾動條的滑塊的偏移值。此值用來計算滾動時滑塊的位置。

偏移值的范圍可以以任何單位表示,但必須與computeHorizontalScrollRange()computeHorizontalScrollExtent()的單位一致。

缺省的偏移值為視圖滾動的偏移差值。

????   返回值

??? ??????   滾動條滑塊在水平方向上的偏移值

?

protected int computeHorizontalScrollRange ()

scroll view 的可滾動水平范圍是所有子視圖的寬度總合。

?????   返回值

??? ???????   水平滾動條表示的全部水平滾動范圍

?

protected int computeScrollDeltaToGetChildRectOnScreen (Rect rect)

計算X方向滾動的總合,以便在屏幕上顯示子視圖的完整矩形(或者,若矩形寬度超過屏幕寬度,至少要填滿第一個屏幕大小)。

參數

rect ???????? 矩形

??????????? 返回值

??? ???????   滾動差值

?

protected float getLeftFadingEdgeStrength ()

返回左漸變邊緣的強度或密集度。強度的值介于0.0(無漸變)到1.0(全漸變)之間。缺省實現只返回0.01.0,而不返回中間值。子類必須重載次方法來給滾動動作提供更平滑的漸變過程。

?????   返回值

??? ???????   左漸變的強度,即介于0.0f1.0f之間的浮點值

?

protected float getRightFadingEdgeStrength ()

返回右漸變邊緣的強度或密集度。強度的值介于0.0(無漸變)到1.0(全漸變)之間。缺省實現只返回0.01.0,而不返回中間值。子類必須重載此方法來給滾動動作提供更平滑的漸變過程。

?????????????????? 返回值

??? ?????????????????? 右漸變的強度,即介于0.0f1.0f之間的浮點值

?

protected void measureChild (View child, int parentWidthMeasureSpec, int parentHeightMeasureSpec)

要求子視圖測量自身,需要將視圖的MeasureSpec和其附加內容同時考慮在內。getChildMeasureSpec在其中承擔了重要角色,它計算出MeasureSpec,并傳遞給子視圖。

參數

child ??????? 要測量的子視圖

parentWidthMeasureSpec ??? 此視圖的寬度要求

parentHeightMeasureSpec ?? 此視圖的高度要求

?

protected void measureChildWithMargins (View child, int parentWidthMeasureSpec, int widthUsed, int parentHeightMeasureSpec, int heightUsed)

要求子視圖測量自身,需要將視圖的MeasureSpec、附加內容和邊緣部分同時考慮在內。子項必須有MarginLayoutParams(邊緣布局參數)。getChildMeasureSpec在其中承擔了重要角色,它計算出MeasureSpec,并傳遞給子視圖。

參數

child ??????? 要測量的子視圖

parentWidthMeasureSpec ??? 此視圖的寬度要求

widthUsed ???? 被父視圖(也可能是其他子視圖)占用的橫向額外空間

parentHeightMeasureSpec ?? 此視圖的高度要求

heightUsed ??? 被父視圖(也可能是其他子視圖)占用的縱向額外空間

?

protected void onLayout (boolean changed, int l, int t, int r, int b)

當此視圖要給每個子視圖賦值大小和位置時,layout會調用此方法。子項的派生類應當重載此方法,并且調用各個子項的layout

參數

changed ????????? 此視圖有新的大小或位置

l ????? 左邊界位置,相對于父視圖

t ???? 上邊界位置,相對于父視圖

r ???? 右邊界位置,相對于父視圖

b ???? 下邊界位置,相對于父視圖

?

protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)

調用此方法來確定本身和所包含內容的大小(寬度和高度)。此方法被measure(int,int)喚起,而且必須被子類重載以得到所包含內容的確切大小。

???????? 注意:當重載此方法時,必須調用setMeasureDimension(int,int)來保存View的大小。如果沒有做到,將會引發一個measure(int,int)拋出的IllegalStateException(非法狀態錯誤)。超類onMeasure(int,int)可以被調用。

???????? 編寫基類的確認大小的方法,缺省情況下是根據其背景大小來確認,除非MeasureSepc允許有更大的高度或寬度。子類必須重載onMeasure(int,int)以得到對其內容大小的更準確的測量。

???????? 若此方法被重載,它的子類需要確保其高度和寬度至少達到View所規定的最小值(可通過getSuggestedMinimumHeight()getSuggestedMinimumWidth()得到)。

參數

widthMeasureSpec ??????? 受上一層大小影響下的對水平空間的要求。可參看View.MeasureSpec

heightMeasureSpec ?????? 受上一層大小影響下的對垂直空間的要求。可參看View.MeasureSpec

?

protected void onOverScrolled (int scrollX, int scrollY, boolean clampedX, boolean clampedY)

overScrollBy(int, int, int, int, int, int, int, int, boolean)調用,來對一個over-scroll操作的結果進行響應。

參數

scrollX ??? 新的X滾動像素值

scrollY ??? 新的Y滾動像素值

clampedX ?????? scrollXover-scroll的邊界限制時,值為true

clampedY ?????? scrollYover-scroll的邊界限制時,值為true

?

protected boolean onRequestFocusInDescendants (int direction, Rect previouslyFocusedRect)

當在某個scroll view的子視圖中尋找焦點時,需要小心不能讓屏幕之外的組件得到焦點。這比缺省ViewGroup的實現代價更高,否則此行為被設為缺省。

參數

direction ???????? 值可以為FOCUS_UPFOCUS_DOWNFOCUS_LEFT FOCUS_RIGHT

previouslyFocusedRect 能夠給出一個較好的提示的矩形(當前視圖的坐標系統)表示焦點從哪里得來。如果沒有提示則為null

返回值

??? ??????   是否取到了焦點。

?

protected void onSizeChanged (int w, int h, int oldw, int oldh)

View的大小改變時此方法被調用。如果View是剛剛被加入,則視之前的值為0

參數

w ??? View的當前寬度

h ???? View的當前高度

oldw ?????? View大小改變之前的寬度

oldh ??????? View大小改變之前的高度

?

  五、補充

    文章精選

      Android HorizontalScrollview Example

?

結束

  這是"Tina"翻譯的第二篇較長的譯稿,上一篇為ListView,再次感謝她!!

?

總結

以上是生活随笔為你收集整理的android中文api(85)——HorizontalScrollView的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。