Android必知必會-自定義Scrollbar樣式

KendallBSU 8年前發布 | 86K 次閱讀 安卓開發 Android開發 移動開發

設計師給的設計圖完全依照 IOS 的標準來的,導致很多細節的控件都得自己重寫,最近的設計圖中有顯示滾動條,Android 默認的滾動條樣式(帶描邊)和設計圖格格不入,無奈,只好研究下自定義 Scrollbar 樣式。這里稍微整理下。

知識點

在 ListView / ScrollView / RecyclerView 中添加屬性:

<!-- 情況A :垂直滾動條-->
android:scrollbars="vertical"
android:scrollbarTrackVertical="@drawable/xxx_vertical_track"
android:scrollbarThumbVertical="@drawable/xxx_vertical_thumb"
<!-- 情況B :水平滾動條-->
android:scrollbars="horizontal"
android:scrollbarTrackHorizontal="@drawable/xxx_horizontal_track"
android:scrollbarThumbHorizontal="@drawable/xxx_horizontal_thumb"

<!-- 其他通用的屬性 -->
<!-- 1.定義滾動條的樣式和位置 -->
android:scrollbarStyle="outsideInset"
<!-- 2.定義滾動條的大小,垂直時指寬度,水平時指高度 -->
android:scrollbarSize="4dp"
屬性 效果
scrollbarThumbVertical[Horizontal] 短條
scrollbarTrackVertical[Horizontal] 長條,即背景

即 scrollbaTrackxxx , scrollbarThumbxxx 自定義的 xml 文件,放在 Drawable 中, track 是指長條, thumb 是指短條,然后再 xml 中定義短條和長條的樣式。

需要注意

其中, scrollbaTrackxxx 、 scrollbarThumbxxx 可以使用

  • Shape自定義 Drawable
  • 圖片
  • .9.png
  • @color/xxx 的方式使用顏色值

不可以直接使用 #xxxxxx 顏色值

android:scrollbarStyle

android:scrollbarStyle 可以定義滾動條的樣式和位置,可選值有 insideOverlay 、 insideInset 、 outsideOverlay 、 outsideInset 四種。

其中 inside 和 outside 分別表示是否在 view 的 padding 區域內, overlay 和 inset 表示覆蓋在 view 上或是插在 view 后面,所以四種值分別表示:

屬性值 效果
insideOverlay 默認值 ,表示在padding區域內并且覆蓋在view上
insideInset 表示在padding區域內并且插入在view后面
outsideOverlay 表示在padding區域外并且覆蓋在view上
outsideInset 表示在padding區域外并且插入在view后面

Demo

下面是兩個Demo:

color:

<color name="red_square">#CCFF6464</color>
<color name="transparent">#00000000</color>

drawable:scrollbar_vertical_thumb

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 填充 -->
    <solid android:color="#66000000"/>
    <!-- 圓角 -->
    <corners android:radius="1dp" />
</shape>

Demo 1

layout:

android:scrollbarStyle="outsideOverlay"
android:scrollbarThumbVertical="@drawable/scrollbar_vertical_thumb"
<!-- 
scrollbarTrackVertical設為透明或者直接不設置即可
android:scrollbarTrackVertical="@color/transparent"
再次強調:scrollbarThumbVertical、scrollbarTrackVertical 不可以直接設置為顏色值,但可以使用@color的方式使用顏色值
-->
android:scrollbarSize="3dp"
android:scrollbars="vertical"

Demo 2

layout:

android:scrollbarStyle="outsideOverlay"
android:scrollbarThumbVertical="@color/red_square"
android:scrollbarSize="3dp"
android:scrollbars="vertical"

效果圖

默認樣式 Demo 1 Demo 2

總結

在查資料的過程中,發現滾動條也可以使用代碼來畫,這里不做過多介紹,有興趣的可以研究一下。

via: http://likfe.github.io/2016/05/16/diyScrollbar/

 本文由用戶 KendallBSU 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!