一行代碼實現一些通用的 Item 布局
BaseItemLayout
簡介
在工作中經常會遇到下面的一些布局,如圖標紅處:
因此自定義了一個通用的Item布局,只需一行代碼就可以根據需要添加任意個item。
使用
1.添加Gradle依賴
在 build.gradle 的 dependencies 添加
dependencies {
...
//compile 'com.maiml:baseitemlayoutlibrary:1.0.0'//舊版本,如果有使用該版本的,由于新版本改動比較大,強烈建議升級。
compile 'com.maiml:baseitemlayoutlibrary:2.1.1'
}</code></pre>
2.在布局使用
<com.maiml.library.BaseItemLayout
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:text_size = "18"
app:text_color = "@color/gray_333333"
app:icon_margin_left = "10"
app:icon_text_margin = "10"
app:arrow_margin_right = "10"
app:item_height = "50"
app:line_color = "@color/line_d6d6d6"
app:right_text_size = "@color/line_d6d6d6"
app:right_text_color = "@color/gray_333333"
app:right_text_margin = "10"
>
</com.maiml.library.BaseItemLayout></code></pre>
3.代碼中調用
-
默認
layout = (BaseItemLayout) findViewById(R.id.layout);
List<String> valueList = new ArrayList<>();
valueList.add("相冊");
valueList.add("收藏");
valueList.add("錢包");
valueList.add("卡包");
valueList.add("設置");
List<Integer> resIdList = new ArrayList<>();
resIdList.add(R.drawable.xc);
resIdList.add(R.drawable.sc);
resIdList.add(R.drawable.qb);
resIdList.add(R.drawable.kb);
resIdList.add(R.drawable.sz);
layout.setValueList(valueList) // 文字 list
.setResIdList(resIdList) // icon list
.create();

-
設置item 與 item 之間的間距
layout.setValueList(valueList) // 文字 list
.setResIdList(resIdList) // icon list
.setItemMarginTop(10) //設置 全部item的間距
.setItemMarginTop(1,20) // 設置 position 下的item 的 間距
.create();
-
設置icon 圖標的大小
layout.setValueList(valueList) // 文字 list
.setResIdList(resIdList) // icon list
.setItemMarginTop(10) //設置 全部item的間距
.setItemMarginTop(1,20) // 設置 position 下的item 的 間距
.setIconHeight(24) // icon 的高度
.setIconWidth(24) // icon 的寬度
.create();
-
設置 item 的右邊的顯示模式(默認什么都不顯示)
- Mode.TXT //箭頭左邊帶有文字
-
List<String> rightTextList = new ArrayList<>(); rightTextList.add("test1"); rightTextList.add("test2"); rightTextList.add("test3"); rightTextList.add("test4"); rightTextList.add("test5"); layout.setValueList(valueList) // 文字 list .setResIdList(resIdList) // icon list .setItemMarginTop(10) //設置 全部item的間距 .setItemMarginTop(1,20) // 設置 position 下的item 的 間距 .setIconHeight(24) // icon 的高度 .setIconWidth(24) // icon 的寬度 .setItemMode(BaseItemLayout.Mode.TXT) // 設置顯示模式 .setItemRightText(rightTextList) // 只有在Mode.TXT 才需要設置改值 .create(); 
- Mode.IMAGE //箭頭
-
List<String> rightTextList = new ArrayList<>();
rightTextList.add("test1");
rightTextList.add("test2");
rightTextList.add("test3");
rightTextList.add("test4");
rightTextList.add("test5");
layout.setValueList(valueList) // 文字 list
.setResIdList(resIdList) // icon list
.setItemMarginTop(10) //設置 全部item的間距
.setItemMarginTop(1,20) // 設置 position 下的item 的 間距
.setIconHeight(24) // icon 的高度
.setIconWidth(24) // icon 的寬度
.setItemMode(BaseItemLayout.Mode.IMAGE) // 設置顯示模式
.create();

- Mode.BUTTON //button
-
List<String> rightTextList = new ArrayList<>();
rightTextList.add("test1");
rightTextList.add("test2");
rightTextList.add("test3");
rightTextList.add("test4");
rightTextList.add("test5");
layout.setValueList(valueList) // 文字 list
.setResIdList(resIdList) // icon list
.setItemMarginTop(10) //設置 全部item的間距
.setItemMarginTop(1,20) // 設置 position 下的item 的 間距
.setIconHeight(24) // icon 的高度
.setIconWidth(24) // icon 的寬度
.setItemMode(BaseItemLayout.Mode.BUTTON) // 設置顯示模式
.setTrunResId(R.drawable.img_turn_down) //設置未選中圖片
.setUpResId(R.drawable.img_up) //設置選中圖片
.create();

- Mode.IMAGE 和 Mode.TXT 混合 或 Mode.IMAGE 和 Mode.BUTTON 混合 或 Mode.TXT 和 Mode.BUTTON 混合
-
List<String> rightTextList = new ArrayList<>();
rightTextList.add("test1");
rightTextList.add("test2");
rightTextList.add("test3");
rightTextList.add("test4");
rightTextList.add("test5");
layout.setValueList(valueList) // 文字 list
.setResIdList(resIdList) // icon list
.setItemMarginTop(10) //設置 全部item的間距
.setItemMarginTop(1,20) // 設置 position 下的item 的 間距
.setIconHeight(24) // icon 的高度
.setIconWidth(24) // icon 的寬度
.setItemMode(BaseItemLayout.Mode.IMAGE) //設置全部item 為 Mode.IMAGE 模式
.setItemMode(valueList.size()-2, BaseItemLayout.Mode.TXT,"text1") //改變 倒數第二個位置 模式為 Mode.TXT
.setItemMode(valueList.size()-1, BaseItemLayout.Mode.TXT,"text2") //改變 最后一個位置 模式為 Mode.TXT
//.setItemMode(BaseItemLayout.Mode.IMAGE)
//.setTrunResId(R.drawable.img_turn_down)
//.setUpResId(R.drawable.img_up)
//.setItemMode(valueList.size()-2, BaseItemLayout.Mode.BUTTON)
//.setItemMode(valueList.size()-1, BaseItemLayout.Mode.BUTTON)
//.setItemMode(BaseItemLayout.Mode.TXT)
//.setItemRightText(rightTextList) // 只有在Mode.TXT 才需要設置改值
//.setTrunResId(R.drawable.img_turn_down)
//.setUpResId(R.drawable.img_up)
//.setItemMode(valueList.size()-2, BaseItemLayout.Mode.BUTTON)
//.setItemMode(valueList.size()-1, BaseItemLayout.Mode.BUTTON)
//.setItemMode(BaseItemLayout.Mode.IMAGE)
//.setTrunResId(R.drawable.img_turn_down)
//.setUpResId(R.drawable.img_up)
//.setItemMode(valueList.size()-3, BaseItemLayout.Mode.TXT,"text1") //改變 倒數第二個位置 模式為 Mode.TXT
//.setItemMode(valueList.size()-2, BaseItemLayout.Mode.BUTTON)
//.setItemMode(valueList.size()-1, BaseItemLayout.Mode.BUTTON)
.create();
-
Mode.TXT //箭頭左邊帶有文字
-
Mode.IMAGE //箭頭
-
Mode.BUTTON //button
-
Mode.IMAGE 和 Mode.TXT 混合 或 Mode.IMAGE 和 Mode.BUTTON 混合 或 Mode.TXT 和 Mode.BUTTON 混合

- 設置監聽事件
layout.setOnBaseItemClick(new BaseItemLayout.OnBaseItemClick() {
@Override
public void onItemClick(int position) {
Log.e(TAG,"----- position = " + position);
}
});
layout.setOnSwitchClickListener(new BaseItemLayout.OnSwitchClickListener() {
@Override
public void onClick(int position, boolean isCheck) {
Log.e(TAG,"-----> position = " + position +" isCheck = " + isCheck);
}
});
參數說明
name
format
description
text_size
integer
字體大小
text_color
color
字體顏色
icon_margin_left
integer
圖標距離 左邊的margin
icon_text_margin
integer
文字距離 圖標左邊的margin
arrow_margin_right
integer
箭頭距離右邊的margin
item_height
integer
item的高度
line_color
color
線的顏色
right_text_size
integer
右邊字體大小
right_text_color
color
右邊字體顏色
right_text_margin
integer
右邊字體與箭頭的間距
參數圖解

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