




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
【移動應(yīng)用開發(fā)技術(shù)】Android如何實(shí)現(xiàn)RecyclerView添加分割線
這篇文章給大家分享的是有關(guān)Android如何實(shí)現(xiàn)RecyclerView添加分割線的內(nèi)容。在下覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨在下過來看看吧。1、前言剛開始學(xué)習(xí)RecyclerView的時(shí)候我跟著一個(gè)視頻學(xué)的,當(dāng)時(shí)添加分割線是從外面導(dǎo)入一個(gè)Java類,然后使用里面的函數(shù)來創(chuàng)建分割線的,所以一直以來我都是這樣做的。直到前幾天才無意中發(fā)現(xiàn),原來v7包中提供了一個(gè)DividerItemDecoration類,利用它,我們可以很簡單地實(shí)現(xiàn)RecyclerView的分割線!那還等什么呢?趕緊用起來。2、創(chuàng)建一個(gè)簡單的RecyclerView首先當(dāng)然應(yīng)該來一個(gè)RecyclerView,這里就不再贅述了,隨便造點(diǎn)數(shù)據(jù)就好。直接上代碼:public
class
MainActivity
extends
AppCompatActivity
{
private
RecyclerView
recyclerView;
private
ArrayList<String>
titles
=
new
ArrayList<>();
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化RecyclerView
recyclerView
=
(RecyclerView)
findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new
LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false));
for
(int
i
=
0;
i
<
20;
i++)
{
titles.add("標(biāo)題"+i);
}
recyclerView.setAdapter(new
RecyclerViewAdapter(this,titles));
}
}RecyclerViewAdapter的代碼:/
**
*
RecyclerView適配器
*/
public
class
RecyclerViewAdapter
extends
RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder>
{
private
Context
context;
private
ArrayList<String>
datas;
class
ViewHolder
extends
RecyclerView.ViewHolder
{
ImageView
ivIcon;
TextView
tvTitle;
public
ViewHolder(View
itemView)
{
super(itemView);
ivIcon
=
(ImageView)
itemView.findViewById(R.id.iv_icon);
tvTitle
=
(TextView)
itemView.findViewById(R.id.tv_title);
}
}
public
RecyclerViewAdapter(Context
context,
ArrayList<String>
datas)
{
this.context
=
context;
this.datas
=
datas;
}
/**
*
相當(dāng)于getView方法中View和ViewHolder
*
*
@param
parent
*
@param
viewType
*
@return
*/
@Override
public
ViewHolder
onCreateViewHolder(ViewGroup
parent,
int
viewType)
{
View
itemView
=
View.inflate(context,
R.layout.item_recyclerview,
null);
RecyclerView.LayoutParams
lp
=
new
RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
itemView.setLayoutParams(lp);
return
new
ViewHolder(itemView);
}
/**
*
@param
holder
*
@param
position
*/
@Override
public
void
onBindViewHolder(ViewHolder
holder,
int
position)
{
//根據(jù)position得到對應(yīng)的數(shù)據(jù)
String
data
=
datas.get(position);
holder.tvTitle.setText(data);
}
/**
*
得到總條數(shù)
*
*
@return
*/
@Override
public
int
getItemCount()
{
return
datas.size();
}
}運(yùn)行之后是這樣的:很明顯,這個(gè)時(shí)候是沒有分割線的。3、添加默認(rèn)的分割線現(xiàn)在我們就來添加分割線,首先來試試最簡單的,也就是安卓自帶的分割線。只需要加一行代碼即可。//添加Android自帶的分割線
recyclerView.addItemDecoration(new
DividerItemDecoration(this,DividerItemDecoration.VERTICAL));addItemDecoration方法需要一個(gè)DividerItemDecoration的對象,而創(chuàng)建其對象時(shí),我們需要傳入上下文和分割線的方向。再運(yùn)行一下,就可以看到分割線出現(xiàn)了:4、自定義分割線有時(shí)候默認(rèn)的淺灰色的分割線并不能滿足我們的要求,這時(shí)我們就需要自己“寫”一條分割線了,那應(yīng)該怎么寫呢?打開DividerItemDecoration看看它的源碼,有這么一個(gè)函數(shù):
public
void
setDrawable(@NonNull
Drawable
drawable)
{
if
(drawable
==
null)
{
throw
new
IllegalArgumentException("Drawable
cannot
be
null.");
}
mDivider
=
drawable;
}我們只需要調(diào)用這個(gè)方法,然后傳入一個(gè)Drawable函數(shù)對象就可以了?,F(xiàn)在可以用shape來編寫一個(gè)分割線樣式:<?xml
version="1.0"
encoding="utf-8"?>
<shape
xmlns:android="/apk/res/android"
android:shape="rectangle">
<gradient
android:centerColor="#ff00ff00"
//綠色
android:endColor="#ff0000ff"
//藍(lán)色
android:startColor="#ffff0000"
//紅色
android:type="linear"
/>
<size
android:height="3dp"
/>
</shape>我這里弄的是一條騷氣的漸變色分割線。然后添加分割線的代碼改為如下://添加自定義分割線
DividerItemDecoration
divider
=
new
DividerItemDecoration(this,DividerItemDecoration.VERTICAL);
divider.setDrawable(ContextCompat.getDrawable(this,R.drawable.custom_divider));
recyclerView.addItemDecoration(divider);跑起來之后,就可以看到一條多彩的分割線了:這樣一來使用范圍就廣很多了,比如item之間需要一定的間隔,那么我們就可以加一條透明的分割線。5、總結(jié)添加分割線的代碼很簡單,以后需要加一條簡單的分割線時(shí)就可以這么處理
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZSA 277-2024 高速落絲上筒機(jī)器人
- 二零二五年度跨境電商股份轉(zhuǎn)讓及供應(yīng)鏈整合協(xié)議
- 2025年度智能公寓退房協(xié)議書
- 二零二五年度白酒品牌區(qū)域總代理合作協(xié)議
- 二零二五年度醫(yī)院及學(xué)校化糞池專業(yè)清理服務(wù)合同
- 二零二五年度企業(yè)財(cái)務(wù)報(bào)表審計(jì)委托代理服務(wù)合同
- 2025年度車間租賃安全管理制度與執(zhí)行協(xié)議
- 二零二五年度無房產(chǎn)證房屋買賣雙方責(zé)任劃分協(xié)議
- 二零二五年度勞動合同法企業(yè)人力資源管理制度合同
- 二零二五年度知識產(chǎn)權(quán)侵權(quán)糾紛調(diào)解協(xié)議范本匯編
- 跟著名著《小王子》學(xué)高考英語讀后續(xù)寫絕佳的續(xù)寫清單-高中英語作文復(fù)習(xí)專項(xiàng)
- 產(chǎn)教融合大學(xué)科技園建設(shè)項(xiàng)目實(shí)施方案
- 交通法律與交通事故處理培訓(xùn)課程與法律解析
- 廣西版四年級下冊美術(shù)教案
- 《換熱器及換熱原理》課件
- 兒童權(quán)利公約演示文稿課件
- UPVC排水管技術(shù)標(biāo)準(zhǔn)
- MSA-測量系統(tǒng)分析模板
- 血透室公休座談水腫的護(hù)理
- 急診預(yù)檢分診專家共識課件
- 廣州市海珠區(qū)事業(yè)單位考試歷年真題
評論
0/150
提交評論