作者:XINHAO_HAN
近期公司在做箱子的一些项目,所以做了一个选择箱子的自定义View
思路:
用GridView + ViewPager + HorizontalScrollView
感觉用起来还不错
使用方法:
View的效果图:
公司APP中的效果图:
中间使用了一个包装类XHCaseView使CaseView更加易用
final String[] title = new String[]{"007号特大箱子", "008号迷你箱子", "009号中型箱子", "UZI号箱子"};
final String[] xinhao = new String[20];
final String[] number = new String[20];
for (int i = 0; i < 20; i++) {
xinhao[i] = "规格:80CM*80CM";
}
final String[] money = new String[20];
for (int i = 0; i < 20; i++) {
money[i] = "¥:1.00";
}
for (int i = 0; i < 20; i++) {
number[i] = "A000" + i;
}
XHCaseView xhCaseView = new XHCaseView(caseView);
xhCaseView.setCaseViewAdapter(new XHCaseView.XHCaseAdapterBean() {
/**
* 获取你的箱子型号整个大箱子的型号
* @param position
* @return
*/
@Override
public String getCaseTtitle(int position) {
return title[position];
}
/**
* 获取你的箱子的小型号,每个格子的规格
* @param position
* @param index
* @return
*/
@Override
public String getCaseModelNumber(int position, int index) {
return xinhao[position];
}
/**
* 每个箱子所使用的价格
* @param position
* @param index
* @return
*/
@Override
public String getCaseMoney(int position, int index) {
return money[position];
}
/**
* 获取你每个箱子的箱号
* @param position
* @param index
* @return
*/
@Override
public String getCaseNumber(int position, int index) {
return number[position];
}
/**
* 总共的箱子(大箱子)的个数
* @return
*/
@Override
public int getCaseCount() {
return 4;
}
/**
* 将使那些箱子不能被选中,不可选
* @param position
* @param pageIndex
* @return
*/
@Override
public boolean getUse(int position, int pageIndex) {
if (position == 16 && pageIndex == 2) {
return true;
}
if (position == 18 && pageIndex == 2) {
return true;
}
if (position == 18 && pageIndex == 1) {
return true;
}
if (position == 7 && pageIndex == 3) {
return true;
}
if(position == 1 && pageIndex == 0){
return true;
}
if(position == 2 && pageIndex == 0){
return true;
}
if(position == 3 && pageIndex == 0){
return true;
}
if(position == 8 && pageIndex == 0){
return true;
}
if(position == 10 && pageIndex == 0){
return true;
}
if(position == 13 && pageIndex == 0){
return true;
}
return false;
}
});
//监听方法
xhCaseView.setIsCheckData(this);
XML
XML:
<com.jiuhong.redcabinet.red_view.CaseView
android:id="@+id/caseView"
android:layout_width="match_parent"
android:layout_height="match_parent"></com.jiuhong.redcabinet.red_view.CaseView>
切记:本人只是为了方便移出DEMO所以把xml和png放到同一个文件夹(drawable)下了,在真实开发中这种操作是不允许的!
Demo(Gtihub):https://github.com/hanxinhao000/CaseBox/tree/master