1. 程式人生 > >Android必知必會-自定義Scrollbar樣式

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

如果移動端訪問不佳,請使用–>GitHub版

背景

設計師給的設計圖完全依照 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] 長條,即背景

scrollbaTrackxxxscrollbarThumbxxx自定義的 xml 檔案,放在Drawable中,track是指長條,thumb是指短條,然後再 xml 中定義短條和長條的樣式。

需要注意

其中,scrollbaTrackxxxscrollbarThumbxxx可以使用

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

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

android:scrollbarStyle

android:scrollbarStyle可以定義滾動條的樣式和位置,可選值有insideOverlayinsideInsetoutsideOverlayoutsideInset四種。

其中insideoutside分別表示是否在 view 的 padding 區域內,overlayinset表示覆蓋在 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"

效果圖

預設樣式 :
default

Demo 1 :
demo1

Demo 2:
demo2

總結

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

PS:

你可以關注的我GithubCSDN微博

相關推薦

Android-定義Scrollbar樣式

如果移動端訪問不佳,請使用–>GitHub版 背景 設計師給的設計圖完全依照 IOS 的標準來的,導致很多細節的控制元件都得自己重寫,最近的設計圖中有顯示滾動條,Android 預設的滾動條樣式(帶描邊)和設計圖格格不入,無奈,只好研究下自定義 Scr

邁向高階:優秀Android程序員的網絡基礎

dss 怎麽 線路 header 能力 收錄 判斷 避免 定義 1、前言 網絡通信一直是Android項目裏比較重要的一個模塊,Android開源項目上出現過很多優秀的網絡框架,從一開始只是一些對HttpClient和HttpUrlConnection簡易封裝使用的工具類,

Android 效能優化(轉載)

做了這麼久效能相關的工作,也接觸了不少模組,說實話要做好效能這一塊,真心不容易.為什麼這麼說? 是因為需要接觸的知識實在是太多了, Android 是一個整體,牽一髮而動全身,不是說只懂一個模組就可以做好. 在學習的過程中,除了看原始碼,我還接觸到了很多網際網路上已有的知識

Android NDK——之JNI的C++操作函式詳解和小結(三)

引言 上一篇講解了一些關於JNI和NDK的必知必會的理論知識和機制,由於篇幅問題把關於JNI的重要的函式放到這篇,具體使用留到下一篇,此係列文章基連結: 一、JNI中的函式概述 在JNI層我們基本上都是通過env指標來呼叫jni.h標頭檔案裡定義的函式,JNI

Android 開發者的許可權管理知識

導語 本文主要講解了Android 許可權管理方面幾個點: Android 許可權背景知識; 許可權檢查及許可權相容; 跳轉到app管理許可權頁面 一、Android 許可權背景知識 提到Android 許可權管理,業內人士都知道Goog

Android 元件化

什麼是元件化? 元件化: 就是將一個 Application 的開發分成多個模組,每個模組都是一個元件(Module),開發的過程中我們可以只用專注自己開發的模組,進行單獨除錯,但在最終釋出 apk 時,又可以將這些元件合併成一個統一的 app。 元件化環境搭建 實現元件化

| Android 效能優化的方面方面都在這兒

大家在工作中或多或少都會拿自家的應用和競品app做比對,不可避免的需要做一些app效能優化的活。很多時候可能是策略上的調整,不過還是有非常多的通用的方式。 一般情況下,我們談效能優化基本上會從以下幾個方面: App啟動速度優化 UI流暢度優化 記憶體

Android程式設計師的網路通訊傳輸層協議——UDP和TCP

1、點評 網際網路發展至今已經高度發達,而對於網際網路應用(尤其即時通訊技術這一塊)的開發者來說,網路程式設計是基礎中的基礎,只有更好地理解相關基礎知識,對於應用層的開發才能做到遊刃有餘。 對於Android程式設計師來說,如果您覺得本文內容稍顯枯燥,可以看看即時通訊網之前整理過的一篇類似文

Android--NinePatch圖片製作

本文為CSDN學院免費課程《NinePatch圖片製作從入門到精通》的筆記,建議新手先觀看視訊,整理此筆記是為了便於自己複習,有NinePatch基礎的朋友可以直接觀看第四部分。—-【轉載請註明出處】 一、工具介紹 這是一張PNG圖片,為了方

Android-Android Studio修改包名

如果移動端訪問不佳,請嘗試–> Github版 背景 公司做相似產品較多,一般都是以某個產品為基礎修改,逐步替換設計圖的切圖。這個就會導致需要經常為Copy的專案修改包名。 這裡是參考一些網上的說法,結合自身實戰經驗加以完善,特此分享給同行們,避免不

Android--GreenDao快取

本篇文章不是介紹GreenDao的配置和基礎使用,記錄一下GreenDao快取的問題,幫助遇到同樣問題的朋友找到原因和方法,下面是示例: 場景重現 //第一次查詢 List chats = daoSession.getChatSessionDao()

mysql--學習筆記(9)--連線表,給表起別名,連線

1、建立聯結,聯結是在select語句中建立的。例如select vend_name, prod_name, prod_price from vendors, products where vendors.vend_id = products.vend_id order by

Android-Stetho除錯工具

一、背景 Stetho是 Facebook 出品的一個強大的 Android 除錯工具,使用該工具你可以在 Chrome Developer Tools檢視APP的佈局, 網路請求(僅限使用Volle, okhttp的網路請求庫), Sqlite, Pr

Android 效能優化

做了這麼久效能相關的工作,也接觸了不少模組,說實話要做好效能這一塊,真心不容易.為什麼這麼說? 是因為需要接觸的知識實在是太多了, Android 是一個整體,牽一髮而動全身,不是說只懂一個模組就可以做好. 在學習的過程中,除了看原始碼,我還接觸到了很多網際網路上已有的知識,各位前輩們,將他們的知識和經驗傾囊

【 專欄 】- Android開發

Android開發必知必會 介紹Android開發過程中必須瞭解的基礎知識,基礎的四大元件,自定義View,事件傳遞,啟動流程,系統框架。儘量能給初學的朋友們勾勒出Android的輪廓,同時自己也能進行一定的梳理。

SQL:連線(深入淺出連線的原理與實現)

先來看程式碼: SELECT cust_id,cust_name,cust_contact FROM Customers WHERE cust_name=(SELECT cust_name                  FROM Customers            

【MySQL】第6章 過濾數據

sea 錯誤 arch order by ice where 大量數據 子句 否則 1、使用WHERE子句   數據庫一般包含大量數據,所以一般不會檢索所有行。只檢索所需數據需要指定搜索條件(search criteria),搜索條件也稱為過濾條件(filter condi

《MYSQL

聚集函數 結構 則表達式 拼接 建議 支持 類型 習慣 功能 1、 同一個數據庫中不允許出現同名表;不同的數據庫中可以出現同名表2、 每一行記錄都用有一個key(一列或一組列作為key)3、 作為key的列不允許值為空(NULL)4、 多個列作為key時,多個列的組

《MYSQL2

pri upd delet rate 服務器 cal delete 生效 單獨 60、NULL是沒有值,空串是一個有效值61、主鍵只能使用不允許未NULL值的列62、每個表只允許一個auto_increment列63、不允許使用函數作為默認值,只支持常量64、InnoDB

SQL -------- 通配符、計算字段、函數

提取 mar 第8章 column round vendor 方法 多少 頁面 1.LIKE操作符 1.1百分號(%)通配符 SELECT prod_id, prod_name FROM Products WHERE prod_name LIKE ‘Fish%‘