Commit 7c4ca32f authored by 陈前's avatar 陈前

Merge branch 'master' of 192.168.254.154:w525721508/TangKuPos

parents f91f5d86 5fa32895
......@@ -20,6 +20,7 @@
<w>nong</w>
<w>patt</w>
<w>shixiu</w>
<w>skugrps</w>
<w>skus</w>
<w>sunquan</w>
<w>xishi</w>
......
......@@ -38,7 +38,7 @@ public abstract class BaseSelectedAdapter<T, B extends ViewDataBinding> extends
notifyItemChanged(mSelectedPosition);
notifyItemChanged(position);
mSelectedPosition = position;
if (!this.isAutoClickItem) {
if (mOnItemClickListener != null && !this.isAutoClickItem) {
mOnItemClickListener.onItemClick(this, view, mSelectedPosition);
}
});
......
......@@ -29,9 +29,11 @@ public abstract class BaseSheetDialog<P extends BasePresenter, B extends ViewDat
dialog.setContentView(mViewBinding.getRoot());
mBehavior = BottomSheetBehavior.from((View) mViewBinding.getRoot().getParent());
this.initView();
return dialog;
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return null;
......@@ -39,7 +41,8 @@ public abstract class BaseSheetDialog<P extends BasePresenter, B extends ViewDat
private class MyBottomSheetDialog extends BottomSheetDialog {
public MyBottomSheetDialog(@NonNull Context context) {
private MyBottomSheetDialog(@NonNull Context context) {
super(context);
}
......@@ -50,7 +53,7 @@ public abstract class BaseSheetDialog<P extends BasePresenter, B extends ViewDat
getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, screenHeight == 0 ? ViewGroup.LayoutParams.MATCH_PARENT : screenHeight);
}
int getScreenHeight(Context context) {
private int getScreenHeight(Context context) {
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
return wm != null ? wm.getDefaultDisplay().getHeight() : 0;
}
......
package com.xingdata.zzdpos.db;
import com.blankj.utilcode.util.StringUtils;
import com.xingdata.zzdpos.App;
import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.base.BaseModel;
import com.xingdata.zzdpos.model.HandoverInfo;
import com.xingdata.zzdpos.model.Ms;
import com.xingdata.zzdpos.model.Pay;
import com.xingdata.zzdpos.model.Sskugrp;
import com.xingdata.zzdpos.model.Sssku;
import com.xingdata.zzdpos.ui.main.MainPresenter;
import com.xingdata.zzdpos.ui.settle.SettlePresenter;
import com.xingdata.zzdpos.ui.store.StorePresenter;
import com.xingdata.zzdpos.util.StringUtil;
import java.util.ArrayList;
import java.util.List;
......@@ -50,6 +54,49 @@ public class DBFactory {
public static class Store {
/**
* 分页查询商品
*
* @param pageNum 页面
* @param skuGrpId 分组ID
* @return 商品List
*/
public static Observable<List<Sssku>> querySku(int pageNum, Long skuGrpId) {
RealmQuery<Sssku> query = DB.getInstance().get(MainPresenter.class).where(Sssku.class);
//skuGrpId
if (skuGrpId != null && skuGrpId > 0) query.equalTo("skuGrpId", skuGrpId);
//skuStatus
query.equalTo("skuStatus", 0);
return Observable.just(query.findAll()).flatMap(ssskus -> Observable.just(getLimitList(ssskus, pageNum, C.PRODUCT.PAGE_SIZE)));
}
/**
* 分页查询商品
*
* @param pageNum 页面
* @param keyword 关键字
* @return 商品List
*/
public static Observable<List<Sssku>> querySku(int pageNum, String keyword) {
RealmQuery<Sssku> query = DB.getInstance().get(MainPresenter.class).where(Sssku.class);
long _keyword = StringUtil.strToLong(keyword);
//keyword
if (!StringUtils.isEmpty(keyword)) {
query.beginGroup()
.contains("spuName", keyword)
.or().contains("spuAb", keyword.toUpperCase());
if (_keyword > 0) query.or().equalTo("spuBarcode", _keyword);
query.endGroup();
}
//skuStatus
query.equalTo("skuStatus", 0);
return Observable.just(query.findAll()).flatMap(ssskus -> Observable.just(getLimitList(ssskus, pageNum, C.PRODUCT.PAGE_SIZE)));
}
/**
* 查询商品分组
*
......
......@@ -8,12 +8,30 @@ import com.xingdata.zzdpos.base.BaseActivity;
import com.xingdata.zzdpos.base.BaseSku;
import com.xingdata.zzdpos.databinding.ActivityStoreBinding;
import com.xingdata.zzdpos.model.Ms;
import com.xingdata.zzdpos.model.Saledetail;
import com.xingdata.zzdpos.model.Saleorder;
import com.xingdata.zzdpos.model.Sskugrp;
import com.xingdata.zzdpos.ui.dialog.LoadingDialog;
import com.xingdata.zzdpos.ui.store.dialog.CartDialog;
import com.xingdata.zzdpos.ui.store.dialog.MsDialog;
import com.xingdata.zzdpos.ui.store.fragment.ScanFragment;
import com.xingdata.zzdpos.ui.store.fragment.SearchFragment;
import com.xingdata.zzdpos.ui.store.fragment.StoreFragment;
import java.util.List;
public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBinding> implements StoreContract.View {
private StoreFragment mStoreFragment = new StoreFragment();
private SearchFragment mSearchFragment = new SearchFragment();
private ScanFragment mScanFragment = new ScanFragment();
private CartDialog mCartDialog = new CartDialog();
private MsDialog mMsDialog = new MsDialog();
private LoadingDialog mLoadingDialog = new LoadingDialog();
@Override
public int getLayoutId() {
return R.layout.activity_store;
......@@ -21,6 +39,8 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin
@Override
public void initView() {
loadRootFragment(R.id.f_store, mStoreFragment);
mViewBinding.ivCart.setOnClickListener(view -> mPresenter.clickCartLogo());
mViewBinding.tvSettle.setOnClickListener(view -> mPresenter.clickSettle());
......@@ -35,11 +55,16 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin
@Override
public <Sku extends BaseSku> void loadSkus(List<Sku> skus, boolean isRefresh) {
mStoreFragment.loadSkus(skus, isRefresh);
}
@Override
public void loadSkugrps(List<Sskugrp> sskugrps) {
mStoreFragment.loadSkugrps(sskugrps);
}
@Override
public void loadSkugrpState(Long skugrpId) {
}
......@@ -52,4 +77,33 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin
public <Sku extends BaseSku> void loadSearchResult(List<Sku> skus, boolean isRefresh) {
}
@Override
public void loadSaleorder(Saleorder saleorder) {
mViewBinding.setCartCount(saleorder.getOrderCnt());
mViewBinding.setOrderPayAmt(saleorder.getOrderPayAmt());
mViewBinding.setMsDisAmt(saleorder.getMsDisAmt());
}
@Override
public void loadSaledetails(List<Saledetail> saledetails, boolean isRefresh) {
mStoreFragment.loadSaledetails(saledetails, isRefresh);
}
@Override
public void showLoadingDialog() {
mLoadingDialog.show(this);
}
@Override
public void dismissLoadingDialog() {
mLoadingDialog.dismiss();
}
@Override
public void showCartDialog(Saleorder saleorder, List<Saledetail> saledetails) {
mCartDialog.setSaleorder(saleorder).setSaledetails(saledetails).show(this);
}
}
......@@ -5,6 +5,7 @@ import com.xingdata.zzdpos.base.BaseSku;
import com.xingdata.zzdpos.base.BaseView;
import com.xingdata.zzdpos.model.Ms;
import com.xingdata.zzdpos.model.Saledetail;
import com.xingdata.zzdpos.model.Saleorder;
import com.xingdata.zzdpos.model.Sskugrp;
import java.util.List;
......@@ -28,6 +29,13 @@ interface StoreContract {
*/
void loadSkugrps(List<Sskugrp> sskugrps);
/**
* 加载分组选中状态
*
* @param skugrpId 分组ID
*/
void loadSkugrpState(Long skugrpId);
/**
* 加载营销方案
*
......@@ -44,6 +52,39 @@ interface StoreContract {
*/
<Sku extends BaseSku> void loadSearchResult(List<Sku> skus, boolean isRefresh);
/**
* 加载订单信息
*
* @param saleorder 订单信息
*/
void loadSaleorder(Saleorder saleorder);
/**
* 加载购物车信息
*
* @param saledetails 购物详情列表
* @param isRefresh 是否刷新列表
*/
void loadSaledetails(List<Saledetail> saledetails, boolean isRefresh);
/**
* 显示读取对话框
*/
void showLoadingDialog();
/**
* 隐藏读取对话框
*/
void dismissLoadingDialog();
/**
* 显示购物车
*
* @param saleorder 订单信息
* @param saledetails 购物车信息
*/
void showCartDialog(Saleorder saleorder, List<Saledetail> saledetails);
}
abstract class Presenter extends BasePresenter<View> {
......@@ -78,6 +119,11 @@ interface StoreContract {
*/
public abstract void searchSku(String keyword);
/**
* 搜索页面 - 加载更多搜索结果
*/
public abstract void loadMoreSearchResult();
/**
* 商店页面 - 切换分组
*
......@@ -101,7 +147,6 @@ interface StoreContract {
*/
public abstract <Sku extends BaseSku> void clickRemoveSku(Sku sku);
/**
* 购物车页面 - 点击添加购物信息
*
......@@ -116,6 +161,10 @@ interface StoreContract {
*/
public abstract void clickRemoveSaledetail(Saledetail saledetail);
/**
* 购物车列表 - 关闭
*/
public abstract void onCartDialogCancel();
}
}
......@@ -4,11 +4,24 @@ import com.xingdata.zzdpos.base.BaseSku;
import com.xingdata.zzdpos.db.DBFactory;
import com.xingdata.zzdpos.model.Ms;
import com.xingdata.zzdpos.model.Saledetail;
import com.xingdata.zzdpos.model.Saleorder;
import com.xingdata.zzdpos.model.Sskugrp;
import com.xingdata.zzdpos.model.Vip;
import java.util.ArrayList;
import java.util.List;
public class StorePresenter extends StoreContract.Presenter {
/**
* 当前会员
*/
private Vip mVip;
/**
* 当前订单信息
*/
private Saleorder mSaleorder;
/**
* 当前购物车信息
*/
......@@ -28,6 +41,10 @@ public class StorePresenter extends StoreContract.Presenter {
@Override
public void onAttached() {
this.initRealm();
mVip = Vip.createDefault();
mSaledetails = new ArrayList<>();
mSaleorder = new Saleorder();
}
@Override
......@@ -36,22 +53,40 @@ public class StorePresenter extends StoreContract.Presenter {
@Override
public void clickCartLogo() {
mView.showCartDialog(mSaleorder, mSaledetails);
}
@Override
public void initStore() {
this.getSkugrp();
this.refreshSku();
}
@Override
public void refreshSku() {
this.mStorePageNum = 0;
this.mSkuGrpId = 0L;
mView.loadSkugrpState(mSkuGrpId);
this.getStoreSku();
}
@Override
public void loadMoreSku() {
this.mStorePageNum++;
this.getStoreSku();
}
@Override
public void searchSku(String keyword) {
this.mSearchPageNum = 0;
this.mKeyword = keyword;
this.getSearchSku();
}
@Override
public void loadMoreSearchResult() {
this.mSearchPageNum++;
this.getSearchSku();
}
@Override
......@@ -60,21 +95,57 @@ public class StorePresenter extends StoreContract.Presenter {
@Override
public <Sku extends BaseSku> void clickAddSku(Sku sku) {
//更新购物车信息
updateCart(sku, 1);
//发送购物车信息(不需要刷新页面)
mView.loadSaledetails(mSaledetails, false);
//设置订单信息
mSaleorder.setSaledetails(mSaledetails);
//统计订单信息
this.reprice();
}
@Override
public <Sku extends BaseSku> void clickRemoveSku(Sku sku) {
//更新购物车信息
updateCart(sku, -1);
//发送购物车信息(不需要刷新页面)
mView.loadSaledetails(mSaledetails, false);
//设置订单信息
mSaleorder.setSaledetails(mSaledetails);
//统计订单信息
this.reprice();
}
@Override
public void clickAddSaledetail(Saledetail saledetail) {
//更新购物车信息
updateCart(saledetail, 1);
//设置订单信息
mSaleorder.setSaledetails(mSaledetails);
//统计订单信息
this.reprice();
}
@Override
public void clickRemoveSaledetail(Saledetail saledetail) {
updateCart(saledetail, -1);
//设置订单信息
mSaleorder.setSaledetails(mSaledetails);
//统计订单信息
this.reprice();
}
@Override
public void onCartDialogCancel() {
//发送购物车信息并刷新页面
mView.loadSaledetails(mSaledetails, true);
}
/**
* 获取商品分组
*/
private void getSkugrp() {
mCompositeDisposable.add(
DBFactory.Store.querySkugrp().subscribe(
......@@ -95,4 +166,84 @@ public class StorePresenter extends StoreContract.Presenter {
})
);
}
/**
* 搜索商品
*/
private void getStoreSku() {
mView.showLoadingDialog();
mCompositeDisposable.add(
DBFactory.Store.querySku(mStorePageNum, mSkuGrpId)
.doOnSubscribe(subscription -> mView.dismissLoadingDialog())
.subscribe(ssskus -> mView.loadSkus(ssskus, mStorePageNum == 0))
);
}
/**
* 搜索商品
*/
private void getSearchSku() {
mView.showLoadingDialog();
mCompositeDisposable.add(
DBFactory.Store.querySku(mSearchPageNum, mKeyword)
.doOnSubscribe(subscription -> mView.dismissLoadingDialog())
.subscribe(ssskus -> mView.loadSearchResult(ssskus, mSearchPageNum == 0))
);
}
/**
* 操作购物车商品
*
* @param sku 要操作的商品
* @param value 变化的数量
*/
private <T extends BaseSku> void updateCart(T sku, int value) {
for (int i = 0; i < mSaledetails.size(); i++) {
if (sku.getSkuId().longValue() == mSaledetails.get(i).getSkuId()) {
int count = mSaledetails.get(i).getDetailCnt() + value;
if (count > 0) {
mSaledetails.get(i).setCount(mSaledetails.get(i).getDetailCnt() + value);
} else {
mSaledetails.remove(i);
}
return;
}
}
if (value > 0) {
Saledetail saledetail = Saledetail.create(sku, mVip);
saledetail.setDetailCnt(value);
mSaledetails.add(0, saledetail);
}
}
/**
* 操作购物车商品
*
* @param saledetail 购物车信息
* @param value 变化的数值
*/
private void updateCart(Saledetail saledetail, int value) {
for (int i = 0; i < mSaledetails.size(); i++) {
if (saledetail.getSkuId().longValue() == mSaledetails.get(i).getSkuId()) {
int count = mSaledetails.get(i).getDetailCnt() + value;
if (count > 0) {
mSaledetails.get(i).setCount(mSaledetails.get(i).getDetailCnt() + value);
} else {
mSaledetails.remove(i);
}
return;
}
}
}
/**
* 统计订单信息
*/
private void reprice() {
mSaleorder.settle();
mView.loadSaleorder(mSaleorder);
}
}
package com.xingdata.zzdpos.ui.store.adapter;
public class SaledetailAdapter {
}
package com.xingdata.zzdpos.ui.store.adapter;
import android.support.annotation.Nullable;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseAdapter;
import com.xingdata.zzdpos.base.BaseSku;
import com.xingdata.zzdpos.databinding.ItemStoreSkuBinding;
import com.xingdata.zzdpos.model.Saledetail;
import com.xingdata.zzdpos.ui.store.fragment.StoreFragment;
import com.xingdata.zzdpos.util.ConvertUtil;
import java.util.ArrayList;
import java.util.List;
public class SkuAdapter<T extends BaseSku> extends BaseAdapter<T, ItemStoreSkuBinding> {
private List<Saledetail> mSaledetails;
public SkuAdapter() {
super(R.layout.item_store_sku, new ArrayList<>());
this.mSaledetails = new ArrayList<>();
}
private StoreFragment.OnCountChangeListener mOnCountChangeListener;
public void setSaledetails(List<Saledetail> saledetails) {
this.mSaledetails = saledetails;
}
public void setOnCountChangeListener(StoreFragment.OnCountChangeListener onCountChangeListener) {
this.mOnCountChangeListener = onCountChangeListener;
}
@Override
protected void convert(ItemStoreSkuBinding mViewBinding, T item) {
mViewBinding.ivPic.setImageURI(item.getSpuImg());
mViewBinding.tvName.setText(item.getSpuName());
mViewBinding.tvAmt.setText(ConvertUtil.fenToYuan(item.getSkuRetailPrice1()));
mViewBinding.ivIncrease.setOnClickListener(view -> {
if (mViewBinding.getCount() >= 99) return;
mViewBinding.setCount(mViewBinding.getCount() + 1);
mViewBinding.ivIncrease.setImageResource(mViewBinding.getCount() > 0 ? R.mipmap.but_increase01 : R.mipmap.but_increase02);
if (mOnCountChangeListener != null) {
mOnCountChangeListener.onCountChange(item, 1);
}
});
mViewBinding.ivReduce.setOnClickListener(view -> {
mViewBinding.setCount(mViewBinding.getCount() - 1);
mViewBinding.ivIncrease.setImageResource(mViewBinding.getCount() > 0 ? R.mipmap.but_increase01 : R.mipmap.but_increase02);
if (mOnCountChangeListener != null) {
mOnCountChangeListener.onCountChange(item, -1);
}
});
mViewBinding.setCount(0);
for (int i = 0; i < mSaledetails.size(); i++) {
if (mSaledetails.get(i).getSkuId().longValue() == item.getSkuId()) {
mViewBinding.setCount(mSaledetails.get(i).getDetailCnt());
break;
}
}
mViewBinding.ivIncrease.setImageResource(mViewBinding.getCount() > 0 ? R.mipmap.but_increase01 : R.mipmap.but_increase02);
}
@Override
public void setOnItemClickListener(@Nullable OnItemClickListener listener) {
super.setOnItemClickListener(listener);
}
}
......@@ -16,6 +16,8 @@ public class SkugrpAdapter extends BaseSelectedAdapter<Sskugrp, ItemStoreSkugrpB
@Override
protected void convert(BaseViewHolder helper, ItemStoreSkugrpBinding mViewBinding, Sskugrp item) {
mViewBinding.setSelected(getSelectedPosition() == helper.getAdapterPosition());
mViewBinding.tvName.getPaint().setFakeBoldText(getSelectedPosition() == helper.getAdapterPosition());
mViewBinding.tvName.setText(item.getSkuGrpName());
}
}
package com.xingdata.zzdpos.ui.store.dialog;
import android.content.DialogInterface;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseSheetDialog;
import com.xingdata.zzdpos.databinding.DialogStoreCartBinding;
import com.xingdata.zzdpos.model.Saledetail;
import com.xingdata.zzdpos.model.Saleorder;
import com.xingdata.zzdpos.ui.store.StorePresenter;
import java.util.List;
public class CartDialog extends BaseSheetDialog<StorePresenter, DialogStoreCartBinding> {
private Saleorder mSaleorder;
private List<Saledetail> mSaledetails;
@Override
public int getLayoutId() {
return R.layout.dialog_store_cart;
......@@ -16,5 +25,22 @@ public class CartDialog extends BaseSheetDialog<StorePresenter, DialogStoreCartB
@Override
public void initView() {
}
public CartDialog setSaleorder(Saleorder saleorder) {
this.mSaleorder = saleorder;
return this;
}
public CartDialog setSaledetails(List<Saledetail> saledetails) {
this.mSaledetails = saledetails;
return this;
}
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
mPresenter.onCartDialogCancel();
}
}
package com.xingdata.zzdpos.ui.store.fragment;
import android.annotation.SuppressLint;
import android.support.v7.widget.LinearLayoutManager;
import android.view.View;
import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseFragment;
import com.xingdata.zzdpos.base.BaseSku;
import com.xingdata.zzdpos.databinding.FragmentStoreBinding;
import com.xingdata.zzdpos.model.Saledetail;
import com.xingdata.zzdpos.model.Sskugrp;
import com.xingdata.zzdpos.ui.store.StorePresenter;
import com.xingdata.zzdpos.ui.store.adapter.SkuAdapter;
import com.xingdata.zzdpos.ui.store.adapter.SkugrpAdapter;
import java.util.List;
public class StoreFragment extends BaseFragment<StorePresenter, FragmentStoreBinding> {
private SkuAdapter mSkuAdapter;
private SkugrpAdapter mSkugrpAdapter;
public interface OnCountChangeListener {
void onCountChange(BaseSku sku, int value);
}
@Override
public int getLayoutId() {
return R.layout.fragment_store_search;
return R.layout.fragment_store;
}
@Override
public void initView() {
// init sku
mSkuAdapter = new SkuAdapter<>();
mViewBinding.rlSku.setAdapter(mSkuAdapter);
mViewBinding.rlSku.setLayoutManager(new LinearLayoutManager(mContext));
// init skugrp
mSkugrpAdapter = new SkugrpAdapter();
mViewBinding.rlSkugrp.setAdapter(mSkugrpAdapter);
mViewBinding.rlSkugrp.setLayoutManager(new LinearLayoutManager(mContext));
// set sku listener
mViewBinding.srlSku.setOnRefreshListener(this::refreshSku);
mSkuAdapter.setOnLoadMoreListener(this::loadMoreSku, mViewBinding.rlSku);
mSkuAdapter.setOnCountChangeListener((sku, value) -> {
if (value > 0) mPresenter.clickAddSku(sku);
else mPresenter.clickRemoveSku(sku);
});
// set grp listener
mSkugrpAdapter.setOnItemClickListener((adapter, view, position) -> mPresenter.clickSkugrp(mSkugrpAdapter.getData().get(position)));
// set empty
@SuppressLint("InflateParams") View view = getLayoutInflater().inflate(R.layout.view_empty, null);
mSkuAdapter.setEmptyView(view);
mSkuAdapter.isUseEmpty(false);
// init data
mPresenter.initStore();
}
/**
* 刷新商品
*/
private void refreshSku() {
mSkuAdapter.setEnableLoadMore(false);
mPresenter.refreshSku();
}
/**
* 加载更多商品
*/
private void loadMoreSku() {
mPresenter.loadMoreSku();
}
/**
* 加载商品分组
*
* @param sskugrps 商品分组
*/
public void loadSkugrps(List<Sskugrp> sskugrps) {
mSkugrpAdapter.setNewData(sskugrps);
}
/**
* 加载商品
*
* @param skus 商品
* @param isRefresh 是否刷新
* @param <Sku> 商品类型
*/
public <Sku extends BaseSku> void loadSkus(List<Sku> skus, boolean isRefresh) {
if (isRefresh) {
mSkuAdapter.isUseEmpty(true);
mSkuAdapter.setEnableLoadMore(true);
mViewBinding.srlSku.setRefreshing(false);
mSkuAdapter.setNewData(skus);
} else if (skus.size() > 0) mSkuAdapter.addData(skus);
if (skus.size() < C.PRODUCT.PAGE_SIZE) mSkuAdapter.loadMoreEnd(isRefresh);
else mSkuAdapter.loadMoreComplete();
}
/**
* 加载购物车信息
*
* @param saledetails 购物车信息
*/
public void loadSaledetails(List<Saledetail> saledetails, boolean isRefresh) {
mSkuAdapter.setSaledetails(saledetails);
if (isRefresh) mSkuAdapter.notifyDataSetChanged();
}
}
......@@ -2,11 +2,17 @@
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/transparent_border"
android:layout_width="match_parent"
android:layout_height="200dp"
android:background="@color/red_xishi"
android:gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="50dp"
android:text="测试测试测试"
android:textColor="@color/white_caocao" />
</LinearLayout>
</layout>
\ No newline at end of file
......@@ -2,11 +2,54 @@
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.design.widget.CoordinatorLayout
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/gray_zhouyu"
android:orientation="vertical">
</android.support.design.widget.CoordinatorLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/white_caocao">
<View
android:layout_width="match_parent"
android:layout_height="@dimen/all_line_width"
android:layout_gravity="bottom"
android:background="@color/gray_huanggai" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="@dimen/all_line_width"
android:layout_marginTop="@dimen/all_margin"
android:background="@color/gray_huanggai" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<android.support.v7.widget.RecyclerView
android:id="@+id/rl_skugrp"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/srl_sku"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3">
<android.support.v7.widget.RecyclerView
android:id="@+id/rl_sku"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.v4.widget.SwipeRefreshLayout>
</LinearLayout>
</LinearLayout>
</layout>
\ No newline at end of file
......@@ -13,50 +13,18 @@
android:background="@color/gray_zhouyu"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/white_caocao">
<View
android:layout_width="match_parent"
android:layout_height="@dimen/all_line_width"
android:layout_gravity="bottom"
android:background="@color/gray_huanggai" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="@dimen/all_line_width"
android:layout_marginTop="@dimen/all_margin"
android:background="@color/gray_huanggai" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<android.support.v7.widget.RecyclerView
android:id="@+id/rl_skugrp"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@color/green_kongrong">
</android.support.v7.widget.RecyclerView>
<android.support.v7.widget.RecyclerView
android:id="@+id/rl_sku"
android:layout_width="0dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="3"
android:background="@color/blue_mawu">
android:background="@color/blue_mawu" />
</android.support.v7.widget.RecyclerView>
</LinearLayout>
</LinearLayout>
</layout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="android.view.View" />
<variable
name="count"
type="int" />
</data>
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white_caocao"
android:paddingEnd="@dimen/all_margin"
android:paddingStart="@dimen/all_margin"
android:paddingTop="@dimen/all_margin">
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/iv_pic"
android:layout_width="80dp"
android:layout_height="80dp"
app:failureImage="@mipmap/icon_goods_default"
app:placeholderImage="@mipmap/icon_goods_default"
app:roundedCornerRadius="@dimen/all_shape_radius" />
<TextView
android:id="@+id/tv_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/all_margin"
android:lines="2"
android:textColor="@color/black_baozheng"
android:textSize="@dimen/all_text_size"
app:layout_constraintLeft_toRightOf="@id/iv_pic"
app:layout_constraintRight_toRightOf="parent" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/all_spacing"
app:layout_constraintBottom_toBottomOf="@id/ll_count"
app:layout_constraintLeft_toLeftOf="@id/tv_name">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/money_rmb"
android:textColor="@color/red_guanyu"
android:textSize="@dimen/all_caption_size"
android:textStyle="bold" />
<TextView
android:id="@+id/tv_amt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/red_guanyu"
android:textSize="@dimen/all_text_size"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/all_spacing"
android:animateLayoutChanges="true"
android:gravity="center"
app:layout_constraintBottom_toBottomOf="@id/iv_pic"
app:layout_constraintRight_toRightOf="@id/tv_name">
<ImageView
android:id="@+id/iv_reduce"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/store_reduce"
android:foreground="?android:attr/actionBarItemBackground"
android:src="@mipmap/but_reduce"
android:visibility="@{count>0?View.VISIBLE:View.INVISIBLE}" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/all_spacing"
android:layout_marginStart="@dimen/all_spacing"
android:text='@{count+""}'
android:textColor="@color/black_likui"
android:textSize="@dimen/all_sub_title_size"
android:visibility="@{count>0?View.VISIBLE:View.INVISIBLE}" />
<ImageView
android:id="@+id/iv_increase"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/store_increase"
android:foreground="?android:attr/actionBarItemBackground"
android:src="@mipmap/but_increase02" />
</LinearLayout>
<View
android:layout_width="0dp"
android:layout_height="@dimen/all_line_width"
android:layout_marginTop="@dimen/all_margin"
android:background="@color/gray_kongming"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_pic" />
</android.support.constraint.ConstraintLayout>
</layout>
......@@ -2,11 +2,114 @@
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="android.view.View" />
<variable
name="count"
type="int" />
</data>
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white_caocao"
android:foreground="?android:attr/selectableItemBackground">
android:paddingEnd="@dimen/all_margin"
android:paddingStart="@dimen/all_margin"
android:paddingTop="@dimen/all_margin">
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/iv_pic"
android:layout_width="80dp"
android:layout_height="80dp"
app:failureImage="@mipmap/icon_goods_default"
app:placeholderImage="@mipmap/icon_goods_default"
app:roundedCornerRadius="@dimen/all_shape_radius" />
<TextView
android:id="@+id/tv_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/all_margin"
android:lines="2"
android:textColor="@color/black_baozheng"
android:textSize="@dimen/all_text_size"
app:layout_constraintLeft_toRightOf="@id/iv_pic"
app:layout_constraintRight_toRightOf="parent" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/all_spacing"
app:layout_constraintBottom_toBottomOf="@id/ll_count"
app:layout_constraintLeft_toLeftOf="@id/tv_name">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/money_rmb"
android:textColor="@color/red_guanyu"
android:textSize="@dimen/all_caption_size"
android:textStyle="bold" />
<TextView
android:id="@+id/tv_amt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/red_guanyu"
android:textSize="@dimen/all_text_size"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/all_spacing"
android:animateLayoutChanges="true"
android:gravity="center"
app:layout_constraintBottom_toBottomOf="@id/iv_pic"
app:layout_constraintRight_toRightOf="@id/tv_name">
<ImageView
android:id="@+id/iv_reduce"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/store_reduce"
android:foreground="?android:attr/actionBarItemBackground"
android:src="@mipmap/but_reduce"
android:visibility="@{count>0?View.VISIBLE:View.INVISIBLE}" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/all_spacing"
android:layout_marginStart="@dimen/all_spacing"
android:text='@{count+""}'
android:textColor="@color/black_likui"
android:textSize="@dimen/all_sub_title_size"
android:visibility="@{count>0?View.VISIBLE:View.INVISIBLE}" />
<ImageView
android:id="@+id/iv_increase"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/store_increase"
android:foreground="?android:attr/actionBarItemBackground"
android:src="@mipmap/but_increase02" />
</LinearLayout>
<View
android:layout_width="0dp"
android:layout_height="@dimen/all_line_width"
android:layout_marginTop="@dimen/all_margin"
android:background="@color/gray_kongming"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_pic" />
</android.support.constraint.ConstraintLayout>
......
......@@ -4,62 +4,38 @@
<data>
<import type="android.view.View" />
<variable
name="selected"
type="boolean" />
</data>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:layout_width="120dp"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/white_caocao"
android:background="@{selected?@color/white_caocao:@color/transparent}"
android:foreground="?android:attr/selectableItemBackground">
<View
android:layout_width="@dimen/all_spacing"
android:layout_height="@dimen/all_sub_title_size"
android:layout_gravity="center_vertical"
android:background="@color/red_guanyu" />
android:background="@color/red_guanyu"
android:visibility="@{selected?View.VISIBLE:View.GONE}" />
<TextView
android:id="@+id/tv_name"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="全部商品"
android:textStyle="bold"
android:textColor="@color/black_baozheng"
android:textSize="@dimen/all_sub_title_size" />
android:textSize="@{selected?@dimen/all_sub_title_size:@dimen/all_text_size}" />
</FrameLayout>
<FrameLayout
android:layout_width="120dp"
android:layout_height="?attr/actionBarSize"
android:background="@color/gray_zhouyu"
android:foreground="?android:attr/selectableItemBackground">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:textStyle="normal"
android:text="全部商品"
android:textColor="@color/black_baozheng"
android:textSize="@dimen/all_text_size" />
</FrameLayout>
</LinearLayout>
</layout>
......
......@@ -538,6 +538,8 @@
<string name="store_ms_dis">已减</string>
<string name="store_scan">扫描</string>
<string name="store_search_hint">请输入商品名称/助记码/条码</string>
<string name="store_reduce">减少</string>
<string name="store_increase">添加</string>
<!--帮助POS-->
<string name="help_hint">帮助</string>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment