Commit 07466a8f authored by 杨秀秀's avatar 杨秀秀

基础搭建

功能开发
1:企业APP-商户审核流程粗略完成
parent 363531ca
......@@ -152,6 +152,39 @@
<option name="y" value="40" />
</Point>
</option>
<option name="myPositions">
<map>
<entry key="action_merchantAuditFirstFragment_to_qualityAuditShopFragment">
<value>
<LayoutPositions />
</value>
</entry>
</map>
</option>
</LayoutPositions>
</value>
</entry>
<entry key="qualityAuditRefuseFragment">
<value>
<LayoutPositions>
<option name="myPosition">
<Point>
<option name="x" value="635" />
<option name="y" value="40" />
</Point>
</option>
</LayoutPositions>
</value>
</entry>
<entry key="qualityAuditShopFragment">
<value>
<LayoutPositions>
<option name="myPosition">
<Point>
<option name="x" value="332" />
<option name="y" value="41" />
</Point>
</option>
</LayoutPositions>
</value>
</entry>
......
......@@ -15,7 +15,7 @@ class BoothListDialog(context:Context,val list:List<BoothBean>): xxBaseDialog<Di
lateinit var adpter:BoothListAdapter;
override fun InitView(): DialogSet {
return DialogSet(R.layout.dialog_booth_list,true,Gravity.BOTTOM,true, WindowManager.LayoutParams.MATCH_PARENT,AutoSizeUtils.dp2px(context,
300.0F
321.0F
));
}
......
......@@ -111,7 +111,7 @@ public class LoginViewModel extends BaseViewModel<LoginRequest> {
//将用户信息存储到本地
LocalData.saveUser(resultBean.getUser());
dismissDialog();
/* if (resultBean.getMerchant()==null)
if (resultBean.getMerchant()==null)
{
Bundle bundle=new Bundle();
bundle.putInt("pageStep", R.id.registerMaterialFragment);
......@@ -123,9 +123,9 @@ public class LoginViewModel extends BaseViewModel<LoginRequest> {
}else {
LocalData.saveMerchant(resultBean.getMerchant());
startActivity(HomeActivity.class);
}*/
LocalData.saveMerchant(resultBean.getMerchant());
startActivity(HomeActivity.class);
}
}
@Override
......
......@@ -364,6 +364,7 @@ public class MerchantEnterViewModel extends BaseViewModel<MerchantEnterRequst> {
*/
public void uploadPic(View view)
{
//选择图片
startPhotoPage(true, new SelectCallback() {
@Override
public void onResult(ArrayList<Photo> photos, boolean isOriginal) {
......
......@@ -61,10 +61,15 @@
android:exported="true">
</activity>
<!--商户审核详情-->
<!--督导商户审核详情-->
<activity android:name=".ui.qualityauditinfo.QualityAuditInfoActivity"
android:exported="true">
</activity>
<!--店总商户审核详情-->
<activity android:name=".ui.qualityauditinfo.ManagerAuditActivity"
android:exported="true">
</activity>
</application>
</manifest>
\ No newline at end of file
......@@ -19,6 +19,7 @@ import retrofit2.http.GET
import retrofit2.http.Headers
import retrofit2.http.Multipart
import retrofit2.http.POST
import retrofit2.http.PUT
import retrofit2.http.Part
import retrofit2.http.Path
import retrofit2.http.Query
......@@ -126,4 +127,27 @@ interface ApiService {
@GET("app/merchant/{businessId}")
fun getMerchantById(@Path("businessId") id:String): Observable<BaseResponse<MerchantBean>>
/**
* 督导审核商户
*/
@Headers("Content-type:application/json")
@PUT("app/merchant/audit/steering")
fun putQualityAudit(@Body requestBody: RequestBody): Observable<BaseResponse<Boolean>>
/**
* 店总审核商户
*/
@Headers("Content-type:application/json")
@PUT("app/merchant/audit/shop")
fun putManagerAudit(@Body requestBody: RequestBody): Observable<BaseResponse<Boolean>>
/**
* 督导修改商户信息
*/
@Headers("Content-type:application/json")
@PUT("app/merchant")
fun putQulityChangeMerchant(@Body requestBody: RequestBody): Observable<BaseResponse<Boolean>>
}
\ No newline at end of file
......@@ -2,13 +2,8 @@ package com.xx.hbhbcompany.data.http.requst
import com.xx.hbhbcompany.data.http.BaseRespons
import com.xx.hbhbcompany.data.http.respons.MerchantBean
import com.xx.hbhbcompany.data.http.respons.UserBean
import com.xx.hbhbcompany.data.http.respons.UserInfoBean
import com.xx.hbhbcompany.data.local.LocalData
import com.xx.hbhbcompany.data.staticdata.StaticData
import io.reactivex.rxjava3.core.Observable
import me.goldze.mvvmhabit.http.ApiParams
import me.goldze.mvvmhabit.http.BasePageResponse
import me.goldze.mvvmhabit.http.BaseResponse
class QualityAuditRequst: BaseRespons() {
......@@ -19,4 +14,51 @@ class QualityAuditRequst: BaseRespons() {
}
/**
* 提交督导审核
*/
fun submitQualityAudit( boothId:String,
businessId:String,
leaseStartTime:String,
leaseEndTime:String,
remark:String?,
reviewComments:Int):Observable<BaseResponse<Boolean>>
{
return apiService.putQualityAudit(ApiParams<QalityAuditbody>().setParams(QalityAuditbody(boothId,businessId,leaseStartTime,leaseEndTime,remark,reviewComments.toString())))
}
/**
* 提交店总审核
*/
fun submitManagerAudit(
businessId:String,
remark:String?,
reviewComments:Int):Observable<BaseResponse<Boolean>>
{
return apiService.putManagerAudit(ApiParams<QalityAuditbody>().setParams(QalityAuditbody(null,businessId,null,null,remark,reviewComments.toString())))
}
/**
* 修改商户开店信息
*/
fun putQulityChangeMerchant(merchantMsgbody: MerchantBean): Observable<BaseResponse<Boolean>>
{
return apiService.putQulityChangeMerchant(ApiParams<MerchantBean>().setParams(merchantMsgbody))
}
/**
* 审核提交信息
*/
data class QalityAuditbody(
var boothId:String?,//展号ID
var businessId:String,//商户ID
var leaseStartTime:String?,//租赁开始日期
var leaseEndTime:String?,//租赁结束日期
var remark:String?,
var reviewComments: String//审核意见:0-通过,1-驳回
)
}
\ No newline at end of file
package com.xx.hbhbcompany.data.http.respons
open class MerchantBean(
var auditStatus:String,
import com.xx.hbhbcompany.ui.qualityauditinfo.QualityAuditInfoViewModel
open class MerchantBean (
var auditStatus:String?,
var boothId:String,//展位id
var brandAuthorizationList:List<BrankBean>,//品牌授权列表
var brandAuthorizationList:List<BrankBean>?,//品牌授权列表
var businessId: String?,//商户逐渐
var businessLicense:String,//营业执照
var companyLogo:String,//公司logo
var companyName:String,//公司全称
var businessLicense:String?,//营业执照
var companyLogo:String?,//公司logo
var companyName:String?,//公司全称
var integral:Int?,//商户积分
var leaseEndTime:String?,
var leaseStartTime:String?,
var merchantNumber:String?,
var merchantSource:String,
var operatingPermit:String,
var merchantSource:String?,
var operatingPermit:String?,
var personPhone:String,
var rating:Double?,
var responsiblePerson:String,
var status:String,//商户状态: 0-待审核, 1-督导驳回, 2-待审批, 3-待提交, 4-店总驳回, 5-经营中, 6-已禁用, 7-已退租
var status:String?,//商户状态: 0-待审核, 1-督导驳回, 2-待审批, 3-待提交, 4-店总驳回, 5-经营中, 6-已禁用, 7-已退租
var remark:String,
var storeName:String,//商店名称
var createTime:String,//创建时间
var logeFile:String,//logo 文件路径
var booth:BoothBean,//展位信息
var operatingPermitFile:Filebean, //经营许可证文件
var logoFile:Filebean,//logo文件
var businessLicenseFile:Filebean,//营业执照文件
var createTime:String?,//创建时间
var logeFile:String?,//logo 文件路径
var booth:BoothBean?,//展位信息
var operatingPermitFile:Filebean?, //经营许可证文件
var logoFile:Filebean?,//logo文件
var businessLicenseFile:Filebean?,//营业执照文件
) {
constructor(mi: QualityAuditInfoViewModel.MerchantInfo,id:String) : this(null,
mi.boothId,
null ,
id,
null,
null,
null,
null,
mi.leaseEndTime.get().toString(),
mi.leaseStartTime.get().toString(),
null,
null,
null,
mi.personPhone.get().toString(),
null,
mi.responsiblePerson.get().toString(),
null,
mi.remark.get().toString(),
mi.storeName.get().toString(),
null,
null,
null,
null,
null,
null) {
}
}
\ No newline at end of file
......@@ -5,7 +5,7 @@ object StaticData {
var sUserType="01"
/**
* 身份 0督导 1店总
* 身份 0督导 1店总 2其他
*/
@JvmField
var sUserRole:Int=0
......
package com.xx.hbhbcompany.dialog
import android.content.Context
import android.view.Gravity
import android.view.View
import android.view.WindowManager
import com.xx.hbhbcompany.R
import com.xx.hbhbcompany.databinding.DialogCommEditBinding
import com.xx.xxviewlibrary.base.xxBaseDialog
import me.jessyan.autosize.utils.AutoSizeUtils
class CommEditDialog(context: Context,var title:String,var sure:String,var cancel:String?) : xxBaseDialog<DialogCommEditBinding>(context) {
override fun InitView(): DialogSet {
return DialogSet(R.layout.dialog_comm_edit,true,
Gravity.BOTTOM,true, WindowManager.LayoutParams.MATCH_PARENT,
AutoSizeUtils.dp2px(context,
321.0F
))
}
override fun InitData() {
binding.dialog=this;
if (cancel==null)
{
binding.btnDialogCancel.visibility=View.GONE
}
}
fun boothClickDialog(view: View) {
if (DialogClickListener != null) {
DialogClickListener.dialogClickBack(view.id,
binding.etDialog.text.toString())
}
dismiss()
}
}
\ No newline at end of file
......@@ -47,17 +47,17 @@ public class ConsultationActivity extends BaseActivity<ActivityConsultationListB
//调用轮播图广告位接口
viewModel.getADList();
/* 轮播图 广告遍历*/
binding.bannerConsult.addBannerLifecycleObserver(this).setIndicator(new CircleIndicator(getContext()));
binding.bannerConsult.addBannerLifecycleObserver(this).setIndicator(new CircleIndicator(this));
viewModel.AdvertisingList.observe(this, new Observer<List<AdvertisingBean>>() {
@Override
public void onChanged(List<AdvertisingBean> advertisingBeans) {
HomeBannerAdapter bannerAdapter = new HomeBannerAdapter(getContext(), advertisingBeans);
HomeBannerAdapter bannerAdapter = new HomeBannerAdapter(ConsultationActivity.this, advertisingBeans);
binding.bannerConsult.setAdapter(bannerAdapter);
}
});
/*资讯列表页-资讯信息标题*/
//获取适配器上下文
ConsultationInformationTitleAdapter consultationInformationTitleAdapter = new ConsultationInformationTitleAdapter(getContext());
ConsultationInformationTitleAdapter consultationInformationTitleAdapter = new ConsultationInformationTitleAdapter(this);
//mList赋值
consultationInformationTitleAdapter.mList = viewModel.consultationTitleBeanList;
//把adapterset进去
......@@ -66,7 +66,7 @@ public class ConsultationActivity extends BaseActivity<ActivityConsultationListB
viewModel.getConsultationTitle();
/*资讯信息列表*/
//获取适配器上下文
ConsultationsInformationAdapter consultationsInformationAdapter = new ConsultationsInformationAdapter(getContext());
ConsultationsInformationAdapter consultationsInformationAdapter = new ConsultationsInformationAdapter(this);
//把adapterset进去
binding.rvZxmsgList.setAdapter(consultationsInformationAdapter);
viewModel.ConsultationInformationList.observe(this, new Observer<List<ConsultationInformationBean>>() {
......
......@@ -138,6 +138,7 @@ public class LoginViewModel extends BaseViewModel<LoginRequest> {
}
}
......@@ -26,8 +26,10 @@ class MerchantAuditAdapter( context: Context, var type:Int=0): xxBaseRecyclerVie
override fun covert(dataBind: ItemMerchantAuditBinding?, data: MerchantBean?, position: Int) {
var viewModel:MerchantAuditItemViewModel=MerchantAuditItemViewModel(AppManager.getAppManager().currentActivity().application,data)
viewModel.type=type;
dataBind?.viewModel=viewModel
if (dataBind!=null)
{
when(type)
......@@ -35,7 +37,7 @@ class MerchantAuditAdapter( context: Context, var type:Int=0): xxBaseRecyclerVie
0-> {InitBtn(dataBind,View.VISIBLE,View.GONE,View.GONE,View.GONE,View.VISIBLE) }
1-> {InitBtn(dataBind,View.GONE,View.VISIBLE,View.VISIBLE,View.GONE,View.VISIBLE) }
2-> {InitBtn(dataBind,View.GONE,View.GONE,View.GONE,View.GONE,View.GONE) }
3-> {InitBtn(dataBind,View.GONE,View.GONE,View.VISIBLE,View.GONE,View.VISIBLE)}
3-> {InitBtn(dataBind,View.GONE,View.VISIBLE,View.GONE,View.GONE,View.VISIBLE)}
4-> {InitBtn(dataBind,View.GONE,View.GONE,View.GONE,View.VISIBLE,View.VISIBLE)}
}
......
......@@ -9,8 +9,11 @@ import android.view.View;
import androidx.annotation.NonNull;
import androidx.databinding.ObservableField;
import com.xx.hbhbcompany.R;
import com.xx.hbhbcompany.data.http.requst.MerchantAuditListRequst;
import com.xx.hbhbcompany.data.http.respons.MerchantBean;
import com.xx.hbhbcompany.data.staticdata.StaticData;
import com.xx.hbhbcompany.ui.qualityauditinfo.ManagerAuditActivity;
import com.xx.hbhbcompany.ui.qualityauditinfo.QualityAuditInfoActivity;
import me.goldze.mvvmhabit.base.BaseViewModel;
......@@ -25,6 +28,8 @@ public class MerchantAuditItemViewModel extends BaseViewModel<MerchantAuditListR
String id;
int type=0;
public MerchantAuditItemViewModel(@NonNull Application application) {
super(application);
......@@ -44,16 +49,31 @@ public class MerchantAuditItemViewModel extends BaseViewModel<MerchantAuditListR
public void goAudit(View view)
{
Bundle bundle=new Bundle();
bundle.putString("MerchantId",id);
if (view.getId()== R.id.btn_ima_audit || view.getId()==R.id.btn_ima_submit)
{
bundle.putInt("pageStep", R.id.merchantAuditFirstFragment);
startActivity(QualityAuditInfoActivity.class,bundle);
}else {
startActivity(ManagerAuditActivity.class,bundle);
}
Bundle build=new Bundle();
build.putString("MerchantId",id);
startActivity(QualityAuditInfoActivity.class,build);
}
void startActivityIM()
public void goEdit(View view)
{
if (type==3)
{
Bundle bundle=new Bundle();
bundle.putString("MerchantId",id);
bundle.putInt("pageStep", R.id.qualityAuditRefuseFragment);
startActivity(QualityAuditInfoActivity.class,bundle);
}
}
}
......@@ -27,6 +27,7 @@ class MerchantAuditListActivity:
override fun initData() {
super.initData()
//初始化列表
var merchantAdapter:MerchantAuditAdapter=MerchantAuditAdapter(this,0)
binding.rvMerchantList.adapter=merchantAdapter
viewModel.mAuditList.observe(this
......@@ -43,6 +44,7 @@ class MerchantAuditListActivity:
if (StaticData.sUserRole==0)
{
//督导的页面初始
viewModel.getMerchantAuditList()
binding.tabs.addOnTabSelectedListener(object:OnTabSelectedListener
{
......@@ -81,6 +83,7 @@ class MerchantAuditListActivity:
})
}else{
//店总页面初始
binding.tabs.visibility= View.GONE
merchantAdapter.type=4
viewModel. merchantStatus="2"
......
package com.xx.hbhbcompany.ui.qualityauditinfo
import android.os.Bundle
import com.xx.hbhbcompany.BR
import com.xx.hbhbcompany.R
import com.xx.hbhbcompany.databinding.ActivityManagerAuditBinding
import com.xx.hbhbcompany.dialog.CommEditDialog
import com.xx.xxviewlibrary.base.xxBaseDialog.onDialogClickListener
import me.goldze.mvvmhabit.base.BaseActivity
class ManagerAuditActivity:
BaseActivity<ActivityManagerAuditBinding, QualityAuditInfoViewModel>() {
override fun initContentView(savedInstanceState: Bundle?): Int {
return R.layout.activity_manager_audit
}
override fun initVariableId(): Int {
return BR.viewModel
}
override fun initData() {
super.initData()
//品牌列表适配
val adapter:QualityBrankAdapter=QualityBrankAdapter(this);
binding.rvFrmBrankList.adapter=adapter
viewModel.brankList.observe(this)
{
it->adapter.mList=it;
adapter.notifyDataSetChanged()
}
//获取商户审核详细信息
viewModel.id=intent.getStringExtra("MerchantId")
viewModel.getMerchantInfo()
//初始化审核弹窗
val dialog:CommEditDialog= CommEditDialog(this,"审核意见","通过","驳回");
dialog.setDialogClickListener(onDialogClickListener<String> { code, data ->
if (code==R.id.btn_dialog_cancel)
{//驳回审核
viewModel.submitManagerAudit(data,1)
}else{
//通过审核
viewModel.submitManagerAudit(data,0)
}
})
//店铺审核点击事件
binding.btnAmaAudit.setOnClickListener({
dialog.show();
})
}
}
\ No newline at end of file
package com.xx.hbhbcompany.ui.qualityauditinfo
import android.os.Bundle
import androidx.navigation.Navigation
import com.xx.hbhbcompany.BR
import com.xx.hbhbcompany.R
import com.xx.hbhbcompany.databinding.ActivityMerchantAuditInfoBinding
......@@ -8,23 +9,26 @@ import me.goldze.mvvmhabit.base.BaseActivity
class QualityAuditInfoActivity :
BaseActivity<ActivityMerchantAuditInfoBinding, QualityAuditInfoViewModel>() {
var pageStep=R.id.merchantAuditFirstFragment
override fun initContentView(savedInstanceState: Bundle?): Int {
return R.layout.activity_merchant_audit_info
}
override fun initParam() {
super.initParam()
pageStep=intent.getIntExtra("pageStep",0)
}
override fun initVariableId(): Int {
return BR.viewModel
}
override fun initData() {
super.initData()
val navController = Navigation.findNavController(findViewById(R.id.fragment_register))
val navGraph = navController.navInflater.inflate(R.navigation.nav_merchant_audit);
navGraph.setStartDestination(pageStep);
navController.setGraph(navGraph, Bundle());
viewModel.id=intent.getStringExtra("MerchantId")
viewModel.getMerchantInfo()
}
override fun initParam() {
super.initParam()
}
}
\ No newline at end of file
......@@ -6,7 +6,10 @@ import android.view.View;
import androidx.annotation.NonNull;
import androidx.databinding.ObservableField;
import androidx.lifecycle.MutableLiveData;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import com.xx.hbhbcompany.R;
import com.xx.hbhbcompany.data.http.requst.QualityAuditRequst;
import com.xx.hbhbcompany.data.http.respons.BrankBean;
import com.xx.hbhbcompany.data.http.respons.MerchantBean;
......@@ -14,12 +17,13 @@ import com.xx.hbhbcompany.data.http.respons.UserBean;
import com.xx.hbhbcompany.data.local.LocalData;
import com.xx.xxviewlibrary.witget.model.FileBean;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.functions.Consumer;
import me.goldze.mvvmhabit.base.BaseViewModel;
import me.goldze.mvvmhabit.base.onDataSelect;
import me.goldze.mvvmhabit.http.ApiDisposableObserver;
import me.goldze.mvvmhabit.utils.RxUtils;
......@@ -35,6 +39,9 @@ public class QualityAuditInfoViewModel extends BaseViewModel<QualityAuditRequst>
public MutableLiveData<List<BrankBean>> brankList=new MutableLiveData<>();
//审核意见:0-通过,1-驳回
public int agree;
public class MerchantInfo
{
public MerchantInfo() {
......@@ -47,6 +54,8 @@ public class QualityAuditInfoViewModel extends BaseViewModel<QualityAuditRequst>
companyLogo=new ObservableField<>(new FileBean("",""));
businessLicense=new ObservableField<>(new FileBean("",""));
operatingPermit=new ObservableField<>(new FileBean("",""));
leaseStartTime=new ObservableField<>("请选择");
leaseEndTime=new ObservableField<>("请选择");
}
public void setMerchantInfo(MerchantBean bean) {
......@@ -55,7 +64,6 @@ public class QualityAuditInfoViewModel extends BaseViewModel<QualityAuditRequst>
storeName.set(bean.getStoreName());
companyName.set(bean.getCompanyName());
responsiblePerson.set(bean.getResponsiblePerson());
remark.set(bean.getRemark());
if (bean.getLogoFile()!=null)
{
......@@ -74,6 +82,9 @@ public class QualityAuditInfoViewModel extends BaseViewModel<QualityAuditRequst>
}
boothId=bean.getBoothId();
leaseStartTime.set(bean.getLeaseStartTime());
leaseEndTime.set(bean.getLeaseEndTime());
}
public ObservableField<String> boothNum;
......@@ -95,6 +106,10 @@ public class QualityAuditInfoViewModel extends BaseViewModel<QualityAuditRequst>
public ObservableField<FileBean> operatingPermit;
public ObservableField<String> leaseEndTime;
public ObservableField<String> leaseStartTime;
}
public QualityAuditInfoViewModel(@NonNull Application application) {
......@@ -108,6 +123,9 @@ public class QualityAuditInfoViewModel extends BaseViewModel<QualityAuditRequst>
}
/**
* 获取商户审核详情
*/
public void getMerchantInfo()
{
model.getMerchantInfoById(id).compose(RxUtils.schedulersTransformer()) //线程调度
......@@ -131,14 +149,141 @@ public class QualityAuditInfoViewModel extends BaseViewModel<QualityAuditRequst>
});
}
/**
* 提交店总审核结果
* @param remark 审核建议
* @param review 审核意见:0-通过,1-驳回
*/
public void submitManagerAudit(String remark,int review)
{
model.submitManagerAudit(id, remark,review).compose(RxUtils.schedulersTransformer()) //线程调度
.doOnSubscribe(QualityAuditInfoViewModel.this)
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
showDialog();
}
}).subscribe(new ApiDisposableObserver<Boolean>() {
@Override
public void onSuccess(Boolean resultBean) {
if (resultBean)
{
finish();
}
}
@Override
public void onError(String Error) {
dismissDialog();
}
});
}
/**
* 督导修改商户
* @param view
*/
public void ChangeMerchant(View view)
{
model.putQulityChangeMerchant(new MerchantBean(merchantInfo,id)).compose(RxUtils.schedulersTransformer()) //线程调度
.doOnSubscribe(QualityAuditInfoViewModel.this)
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
showDialog();
}
}).subscribe(new ApiDisposableObserver<Boolean>() {
@Override
public void onSuccess(Boolean resultBean) {
if (resultBean)
{
finish();
}
}
@Override
public void onError(String Error) {
dismissDialog();
}
});
}
/**
* 下一步商店审核
* @param view
*/
public void goShopAudit(View view)
{
NavController navController= Navigation.findNavController(view);
navController.navigate(R.id.action_merchantAuditFirstFragment_to_qualityAuditShopFragment);
}
/**
* 上一步
* @param view
*/
public void lastStep(View view)
{
NavController navController= Navigation.findNavController(view);
navController.getBackQueue();
}
/**
* 日期选择
* @param view
*/
public void selectData(View view)
{
//选择时间弹窗控件
showDataDialog(Calendar.getInstance(), new onDataSelect() {
@Override
public void reData(@NonNull String dataStr) {
if (view.getId()==R.id.xfe_fqas_start)
{
merchantInfo.leaseStartTime.set(dataStr);
}else {
merchantInfo.leaseEndTime.set(dataStr);
}
}
});
}
/**
* 提交督导审核结果
* @param view
*/
public void submitQualityAudit(View view)
{
model.submitQualityAudit(merchantInfo.boothId,id, merchantInfo.leaseStartTime.get(), merchantInfo.leaseEndTime.get(),merchantInfo.remark.get(),agree).compose(RxUtils.schedulersTransformer()) //线程调度
.doOnSubscribe(QualityAuditInfoViewModel.this)
.doOnSubscribe(new Consumer<Disposable>() {
@Override
public void accept(Disposable disposable) throws Exception {
showDialog();
}
}).subscribe(new ApiDisposableObserver<Boolean>() {
@Override
public void onSuccess(Boolean resultBean) {
if (resultBean)
{
finish();
}
}
@Override
public void onError(String Error) {
dismissDialog();
}
});
}
}
package com.xx.hbhbcompany.ui.qualityauditinfo
import android.os.Bundle
import android.view.LayoutInflater
import android.view.ViewGroup
import com.xx.hbhbcompany.BR
import com.xx.hbhbcompany.R
import com.xx.hbhbcompany.databinding.FragmentMerchantAuditFirstBinding
import com.xx.hbhbcompany.databinding.FragmentQualityAuditRefuseBinding
import me.goldze.mvvmhabit.base.BaseFragment
class QualityAuditRefuseFragment:
BaseFragment<FragmentQualityAuditRefuseBinding, QualityAuditInfoViewModel>() {
override fun viewModelType(): Int {
return 1
}
override fun initContentView(
inflater: LayoutInflater?,
container: ViewGroup?,
savedInstanceState: Bundle?
): Int {
return R.layout.fragment_quality_audit_refuse
}
override fun initVariableId(): Int {
return BR.viewModel
}
override fun initData() {
super.initData()
val adapter:QualityBrankAdapter=QualityBrankAdapter(requireContext());
binding.rvFrmBrankList.adapter=adapter
viewModel.brankList.observe(this)
{
it->adapter.mList=it;
adapter.notifyDataSetChanged()
}
}
}
\ No newline at end of file
package com.xx.hbhbcompany.ui.qualityauditinfo
import android.os.Bundle
import android.view.LayoutInflater
import android.view.ViewGroup
import android.widget.RadioButton
import android.widget.RadioGroup
import android.widget.Toast
import com.xx.hbhbcompany.BR
import com.xx.hbhbcompany.R
import com.xx.hbhbcompany.databinding.FragmentQualityAuditShopBinding
import me.goldze.mvvmhabit.base.BaseFragment
class QualityAuditShopFragment:BaseFragment<FragmentQualityAuditShopBinding,QualityAuditInfoViewModel> (){
override fun viewModelType(): Int {
return 1;
}
override fun initContentView(
inflater: LayoutInflater?,
container: ViewGroup?,
savedInstanceState: Bundle?
): Int {
return R.layout.fragment_quality_audit_shop
}
override fun initVariableId(): Int {
return BR.viewModel
}
override fun initData() {
super.initData()
binding.rgFqas.setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener { radioGroup, i ->
if (i==R.id.rb_fqas_pass)
{
viewModel.agree=0
}else if (i==R.id.rb_fqas_refuse){
viewModel.agree=1
}
})
}
}
\ No newline at end of file
package com.xx.hbhbcompany.ui.work;
import android.app.Application;
import android.app.DatePickerDialog;
import android.view.View;
import android.widget.DatePicker;
import androidx.annotation.NonNull;
import androidx.databinding.ObservableField;
import com.xx.hbhbcompany.data.http.requst.WorkRequest;
import com.xx.hbhbcompany.data.local.LocalData;
import com.xx.hbhbcompany.data.staticdata.StaticData;
import com.xx.hbhbcompany.ui.merchantaudit.MerchantAuditListActivity;
import me.goldze.mvvmhabit.base.BaseViewModel;
......@@ -31,6 +35,23 @@ public class WorkViewModel extends BaseViewModel<WorkRequest> {
setValueToNickName();
}
/**
* 进入商户审核列表
*/
public void goQualityAuditList(View view)
{
//其他身份不进行跳转
if (StaticData.sUserRole==2)
{
return;
}
startActivity(MerchantAuditListActivity.class);
}
//跳转商户管理页面
public BindingCommand goMerchant = new BindingCommand(new BindingAction() {
@Override
......
This diff is collapsed.
<?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"
android:background="@drawable/bg_white_top_radius_20">
<data>
<variable
name="dialog"
type="com.xx.hbhbcompany.dialog.CommEditDialog" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:padding="17dp"
android:layout_height="321dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{dialog.title}"
android:textSize="18sp"
android:textColor="#333333"
android:id="@+id/tv_dialog_title"
android:textStyle="bold"
android:layout_marginTop="5dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"/>
<!-- LayoutManagers.linear(1,false) 竖向-->
<EditText
android:id="@+id/et_dialog"
android:layout_width="match_parent"
android:layout_height="167dp"
android:layout_marginTop="22dp"
android:layout_marginBottom="22dp"
android:hint="请输入审核意见"
android:padding="17dp"
android:gravity="top"
android:textSize="16sp"
android:background="@drawable/bg_side_grey_1_radius_4"
app:layout_constraintBottom_toTopOf="@+id/btn_dialog_cancel"
app:layout_constraintTop_toBottomOf="@+id/tv_dialog_title"
/>
<Button
android:layout_width="165dp"
android:layout_height="45dp"
android:text="驳回"
android:background="@drawable/bg_side_blue_1_radius_20"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
android:textColor="@color/foreground"
android:onClick="@{dialog.boothClickDialog}"
android:id="@+id/btn_dialog_cancel"/>
<Button
android:layout_width="165dp"
android:layout_height="45dp"
android:text="@{dialog.sure}"
android:textColor="@color/white"
android:background="@drawable/bg_foregrount_radius_20"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:onClick="@{dialog.boothClickDialog}"
android:id="@+id/btn_dialog_confirm"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:binding="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="viewModel"
type="com.xx.hbhbcompany.ui.qualityauditinfo.QualityAuditInfoViewModel" />
<import type="me.goldze.mvvmhabit.binding.viewadapter.recyclerview.LayoutManagers" />
<import type="me.goldze.mvvmhabit.binding.viewadapter.recyclerview.LineManagers" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/bg_grey"
android:fitsSystemWindows="true">
<com.xx.merchanthbh.widget.AuditStepLayout
android:layout_width="0dp"
android:layout_height="132dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginLeft="17dp"
android:layout_marginRight="17dp"
android:layout_marginTop="17dp"
android:id="@+id/rsl_frm"
/>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
app:layout_constraintTop_toBottomOf="@+id/rsl_frm"
app:layout_constraintBottom_toTopOf="@+id/ll_ame_bottom"
android:layout_height="0dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="17dp"
android:paddingRight="17dp"
android:paddingBottom="18dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="13dp"
android:paddingBottom="28dp"
android:background="@drawable/bg_white_radius_12">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/black"
android:layout_marginTop="28dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginLeft="13dp"
android:text="审核结果"
android:id="@+id/tv_fqas_result_title"
android:textSize="16sp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/xx_text_red"
app:layout_constraintTop_toTopOf="@+id/tv_fqas_result_title"
app:layout_constraintLeft_toRightOf="@+id/tv_fqas_result_title"
android:id="@+id/tv_wxe_necessary"
android:textSize="16sp"
android:text="*"/>
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/tv_fqas_result_title"
app:layout_constraintLeft_toLeftOf="@+id/tv_fqas_result_title"
android:orientation="horizontal"
android:id="@+id/rg_fqas"
android:layout_marginTop="28dp">
<RadioButton
android:id="@+id/rb_fqas_pass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/text_grey"
android:textSize="16sp"
android:text="审核通过" />
<RadioButton
android:id="@+id/rb_fqas_refuse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="审核驳回"
android:layout_marginLeft="34dp"
android:textColor="@color/text_grey"
android:textSize="16sp"/>
</RadioGroup>
</androidx.constraintlayout.widget.ConstraintLayout>
<com.xx.xxviewlibrary.witget.XxFormEdit
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="13dp"
android:background="@drawable/bg_white_radius_12"
ed_title='@{@string/quality_person}'
app:content_type="1"
app:necessary="false"
app:isBottom="true"
ed_content="@={viewModel.merchantInfo.responsiblePerson}"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="13dp"
android:background="@drawable/bg_white_radius_12"
android:orientation="vertical">
<com.xx.xxviewlibrary.witget.XxFormEdit
android:id="@+id/xfe_fqas_start"
android:layout_width="match_parent"
android:layout_height="wrap_content"
ed_title='@{@string/rent_start_time}'
app:content_type="2"
android:onClick="@{viewModel.selectData}"
ed_content="@={viewModel.merchantInfo.leaseStartTime}"
/>
<com.xx.xxviewlibrary.witget.XxFormEdit
android:id="@+id/xfe_fqas_end"
android:layout_width="match_parent"
android:layout_height="wrap_content"
ed_title='@{@string/rent_end_time}'
app:content_type="2"
app:isBottom="true"
android:onClick="@{viewModel.selectData}"
ed_content="@={viewModel.merchantInfo.leaseEndTime}"
/>
</LinearLayout>
<com.xx.xxviewlibrary.witget.XxFormEdit
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="13dp"
android:background="@drawable/bg_white_radius_12"
ed_title='@{@string/remark}'
app:content_type="3"
app:necessary="false"
app:isBottom="true"
ed_content="@={viewModel.merchantInfo.remark}"
/>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="92dp"
android:id="@+id/ll_ame_bottom"
app:layout_constraintBottom_toBottomOf="parent"
android:background="@color/white"
android:padding="17dp"
android:gravity="center"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatButton
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="@drawable/bg_side_blue_1_radius_24"
android:text="上一步"
android:layout_weight="1"
android:textColor="@color/foreground"
android:onClick="@{viewModel.lastStep}"
android:textSize="16sp"
android:layout_marginRight="6dp"
android:textStyle="bold"/>
<androidx.appcompat.widget.AppCompatButton
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_weight="1"
android:layout_marginLeft="6dp"
android:background="@drawable/bg_forground_radius_24"
android:text="确定"
android:textColor="@color/white"
android:onClick="@{viewModel.submitQualityAudit}"
android:textSize="16sp"
android:textStyle="bold"/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
\ No newline at end of file
......@@ -137,6 +137,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:onClick="@{workViewModel.goQualityAuditList}"
android:orientation="vertical">
<!--商户审核-数量-->
<TextView
......
......@@ -105,6 +105,7 @@
android:layout_marginLeft="11dp"
android:id="@+id/btn_ima_approve"
android:visibility="gone"
android:onClick="@{viewModel.goAudit}"
android:text="审批"/>
<Button
......@@ -113,15 +114,17 @@
android:layout_marginLeft="11dp"
android:id="@+id/btn_ima_edit"
style="@style/xxBtnStyle"
android:onClick="@{viewModel.goEdit}"
android:visibility="gone"
android:text="编辑"/>
<Button
android:layout_width="62dp"
android:layout_width="90dp"
android:layout_height="28dp"
android:layout_marginLeft="11dp"
android:id="@+id/btn_ima_submit"
android:visibility="gone"
style="@style/xxBtnStyle"
android:onClick="@{viewModel.goAudit}"
android:text="提交审批"/>
</LinearLayout>
......
......@@ -9,5 +9,17 @@
<fragment
android:id="@+id/merchantAuditFirstFragment"
android:name="com.xx.hbhbcompany.ui.qualityauditinfo.QualityAuditFirstFragment"
android:label="MerchantAuditFirstFragment" />
android:label="MerchantAuditFirstFragment" >
<action
android:id="@+id/action_merchantAuditFirstFragment_to_qualityAuditShopFragment"
app:destination="@id/qualityAuditShopFragment" />
</fragment>
<fragment
android:id="@+id/qualityAuditShopFragment"
android:name="com.xx.hbhbcompany.ui.qualityauditinfo.QualityAuditShopFragment"
android:label="QualityAuditShopFragment" />
<fragment
android:id="@+id/qualityAuditRefuseFragment"
android:name="com.xx.hbhbcompany.ui.qualityauditinfo.QualityAuditRefuseFragment"
android:label="QualityAuditRefuseFragment" />
</navigation>
\ No newline at end of file
......@@ -110,4 +110,6 @@
<string name="rent_start_time">租期开始日期</string>
<string name="rent_end_time">租期结束日期</string>
<string name="contact_way">联系方式</string>
<string name="contract_no">合同编号</string>
<string name="booth_no">展位号</string>
</resources>
\ No newline at end of file
package me.goldze.mvvmhabit.base;
import android.app.DatePickerDialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.WindowManager;
import android.widget.DatePicker;
import com.afollestad.materialdialogs.MaterialDialog;
import com.huantansheng.easyphotos.EasyPhotos;
......@@ -13,7 +15,10 @@ import com.trello.rxlifecycle4.components.support.RxAppCompatActivity;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Map;
import androidx.annotation.Nullable;
......@@ -167,6 +172,20 @@ public abstract class BaseActivity<V extends ViewDataBinding, VM extends BaseVie
startPhoto(hasCamera,callback);
}
});
//调用日期选择弹窗
viewModel.getUC().getShowDataDialogEvent().observe(this,new Observer<Map<String, Object>>()
{
@Override
public void onChanged(Map<String, Object> stringObjectMap) {
int year= (int) stringObjectMap.get("year");
int month= (int) stringObjectMap.get("month");
int day= (int) stringObjectMap.get("day");
onDataSelect ondata= (onDataSelect) stringObjectMap.get("ondata");
showDataDialog(year,month,day,ondata);
}
});
}
/**
......@@ -241,6 +260,36 @@ public abstract class BaseActivity<V extends ViewDataBinding, VM extends BaseVie
startActivity(intent);
}
/**
* 展示日期选择
* @param year
* @param month
* @param day
* @param onData
*/
public void showDataDialog(int year,int month,int day,onDataSelect onData)
{
DatePickerDialog datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
try {
SimpleDateFormat df=new SimpleDateFormat("yyyy-m-d");
Date date= df.parse(year + "-" + (month + 1) + "-" + dayOfMonth);
SimpleDateFormat df2=new SimpleDateFormat("yyyy-MM-dd");
onData.reData(df2.format(date) );
} catch (ParseException e) {
onData.reData( "");
throw new RuntimeException(e);
}
}
}, year, month, day);
datePickerDialog.setMessage("生日选择");
datePickerDialog.show();
}
/**
* =====================================================================
**/
......
package me.goldze.mvvmhabit.base;
import android.app.DatePickerDialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.DatePicker;
import androidx.annotation.Nullable;
import androidx.databinding.DataBindingUtil;
......@@ -17,13 +19,13 @@ import androidx.lifecycle.ViewModelProviders;
import com.afollestad.materialdialogs.MaterialDialog;
import com.huantansheng.easyphotos.EasyPhotos;
import com.huantansheng.easyphotos.callback.SelectCallback;
import com.huantansheng.easyphotos.models.album.entity.Photo;
import com.huantansheng.easyphotos.setting.Setting;
import com.trello.rxlifecycle4.components.support.RxFragment;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import me.goldze.mvvmhabit.base.BaseViewModel.ParameterField;
......@@ -184,6 +186,20 @@ public abstract class BaseFragment<V extends ViewDataBinding, VM extends BaseVie
startPhoto(hasCamera,callback);
}
});
//调用日期选择弹窗
viewModel.getUC().getShowDataDialogEvent().observe(this,new Observer<Map<String, Object>>()
{
@Override
public void onChanged(Map<String, Object> stringObjectMap) {
int year= (int) stringObjectMap.get("year");
int month= (int) stringObjectMap.get("month");
int day= (int) stringObjectMap.get("day");
onDataSelect ondata= (onDataSelect) stringObjectMap.get("ondata");
showDataDialog(year,month,day,ondata);
}
});
}
public void startPhoto(boolean hasCamera,SelectCallback callback)
......@@ -255,6 +271,38 @@ public abstract class BaseFragment<V extends ViewDataBinding, VM extends BaseVie
startActivity(intent);
}
/**
* 展示日期选择
* @param year
* @param month
* @param day
* @param onData
*/
public void showDataDialog(int year,int month,int day,onDataSelect onData)
{
DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(), new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
try {
SimpleDateFormat df=new SimpleDateFormat("yyyy-m-d");
Date date= df.parse(year + "-" + (month + 1) + "-" + dayOfMonth);
SimpleDateFormat df2=new SimpleDateFormat("yyyy-MM-dd");
onData.reData(df2.format(date) );
} catch (ParseException e) {
onData.reData( "");
throw new RuntimeException(e);
}
}
}, year, month, day);
datePickerDialog.setMessage("生日选择");
datePickerDialog.show();
}
/**
* =====================================================================
**/
......
......@@ -3,11 +3,9 @@ package me.goldze.mvvmhabit.base;
import android.app.Application;
import android.os.Bundle;
import java.io.File;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import androidx.annotation.NonNull;
......@@ -17,15 +15,12 @@ import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.Observer;
import com.huantansheng.easyphotos.callback.SelectCallback;
import com.huantansheng.easyphotos.models.album.entity.Photo;
import com.trello.rxlifecycle4.LifecycleProvider;
import io.reactivex.rxjava3.disposables.CompositeDisposable;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.functions.Consumer;
import me.goldze.mvvmhabit.bus.event.SingleLiveEvent;
import me.goldze.mvvmhabit.http.ApiDisposableObserver;
import me.goldze.mvvmhabit.utils.RxUtils;
/**
* Created by goldze on 2017/6/15.
......@@ -153,7 +148,7 @@ public class BaseViewModel<M extends BaseModel> extends AndroidViewModel impleme
/**
* 获取照片,图片
* @param hasCamera
* @param hasCamera 是否有照相机功能
* @param callback
*/
public void startPhotoPage(boolean hasCamera, SelectCallback callback)
......@@ -166,6 +161,37 @@ public class BaseViewModel<M extends BaseModel> extends AndroidViewModel impleme
uc.startPhotoEvent.postValue(photomap);
}
/**
* 选择日期
* @param calendar
* @param ondata
*/
public void showDataDialog(Calendar calendar, onDataSelect ondata)
{
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
showDataDialog(year,month,day,ondata);
}
/**
* 选择日期
* @param year
* @param month
* @param day
* @param ondata
*/
public void showDataDialog(int year,int month,int day, onDataSelect ondata)
{
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("year", year);
dataMap.put("month", month);
dataMap.put("day", day);
if (ondata != null) {
dataMap.put("ondata", ondata);
}
uc.showDataDialogEvent.postValue(dataMap);
}
......@@ -233,6 +259,8 @@ public class BaseViewModel<M extends BaseModel> extends AndroidViewModel impleme
private SingleLiveEvent<Map<String, Object>> startPhotoEvent;
private SingleLiveEvent<Map<String, Object>> showDataDialogEvent;
......@@ -251,6 +279,10 @@ public class BaseViewModel<M extends BaseModel> extends AndroidViewModel impleme
{
return startPhotoEvent=createLiveData(startPhotoEvent);
}
public SingleLiveEvent<Map<String, Object>> getShowDataDialogEvent()
{
return showDataDialogEvent=createLiveData(showDataDialogEvent);
}
public SingleLiveEvent<Map<String, Object>> getStartContainerActivityEvent() {
return startContainerActivityEvent = createLiveData(startContainerActivityEvent);
}
......
package me.goldze.mvvmhabit.base;
public interface onDataSelect {
void reData(String dataStr);
}
......@@ -31,7 +31,7 @@ public abstract class xxBaseRecyclerViewAdapter<T extends ViewDataBinding,K> ext
public LifecycleOwner ownerl;
public xxBaseRecyclerViewAdapter(Context context) {
ownerl= (LifecycleOwner) mContext;
ownerl= (LifecycleOwner) context;
mContext=context;
}
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="24dp"/>
<stroke android:width="1dp" android:color="@color/foreground"/>
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="4dp"/>
<stroke android:width="1dp" android:color="#eeeeee"/>
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/white"/>
<corners android:topLeftRadius="20dp" android:topRightRadius="20dp"/>
</shape>
\ No newline at end of file
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