Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
supplier
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
王宇航
supplier
Commits
689f9821
Commit
689f9821
authored
Apr 26, 2021
by
宁斌
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1、折扣彈窗cash問題
parent
5699dacf
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
113 additions
and
218 deletions
+113
-218
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/contract/OrderContentContract.java
+2
-1
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/OrderContentModel.java
+6
-6
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/OrderContentPresenter.java
+46
-46
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/widget/DiscountDialog.java
+38
-150
component-table/src/main/res/layout/table_dialog_discout.xml
+21
-15
No files found.
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/contract/OrderContentContract.java
View file @
689f9821
...
...
@@ -4,6 +4,7 @@ import android.content.Intent;
import
com.gingersoft.gsa.cloud.common.bean.BaseResult
;
import
com.gingersoft.gsa.cloud.common.core.table.TableBean
;
import
com.gingersoft.gsa.cloud.database.bean.Discount
;
import
com.gingersoft.gsa.cloud.table.mvp.model.bean.response.BaseOrderResponse
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.fragment.RegionTableFragment
;
import
com.jess.arms.base.DefaultAdapter
;
...
...
@@ -71,7 +72,7 @@ public interface OrderContentContract {
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface
Model
extends
BaseOrderContract
.
Model
{
//
List<Discount> queryDB_DiscountList(byte discountScope, byte discountType);
List
<
Discount
>
queryDB_DiscountList
(
byte
discountScope
,
byte
discountType
);
Observable
<
BaseOrderResponse
>
createOrder
(
RequestBody
requestBody
);
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/OrderContentModel.java
View file @
689f9821
...
...
@@ -76,12 +76,12 @@ public class OrderContentModel extends BaseModel implements OrderContentContract
.
loadOrder
(
orderId
);
}
//
@Override
//
public List<Discount> queryDB_DiscountList(byte discountScope, byte discountType) {
//
DiscountDaoUtils discountDaoUtils = new DiscountDaoUtils(mApplication);
//
List<Discount> discountList = discountDaoUtils.queryDiscountByQueryBuilder();
//
return MealConditionFilterUtils.discountConditionFilter(discountList,discountScope,discountType);
//
}
@Override
public
List
<
Discount
>
queryDB_DiscountList
(
byte
discountScope
,
byte
discountType
)
{
DiscountDaoUtils
discountDaoUtils
=
new
DiscountDaoUtils
(
mApplication
);
List
<
Discount
>
discountList
=
discountDaoUtils
.
queryDiscountByQueryBuilder
();
return
MealConditionFilterUtils
.
discountConditionFilter
(
discountList
,
discountScope
,
discountType
);
}
@Override
public
Observable
<
BaseOrderResponse
>
createOrder
(
RequestBody
requestBody
)
{
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/OrderContentPresenter.java
View file @
689f9821
...
...
@@ -814,42 +814,12 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
}
private
void
showDiscountDialog
()
{
if
(
IActivity
.
findFragment
(
DiscountDialogFragment
.
class
)
==
null
)
{
DiscountDialogFragment
dialogFragment
=
DiscountDialogFragment
.
newInstance
();
dialogFragment
.
setOnDiscountItemClickListener
(
new
DiscountDialogFragment
.
OnDiscountItemClickListener
()
{
@Override
public
void
onBillDiscountClick
(
Discount
item
,
int
position
)
{
if
(
item
.
getMinBillAmount
()
>
mShoppingCart
.
getWholeAmount
())
{
//小於最小賬單金額
mRootView
.
showMessage
(
"小於最小賬單金額"
+
cashStr
+
item
.
getMinBillAmount
()
+
" 無法使用此折扣"
);
return
;
}
mNomalDiscountAction
.
setNomalDiscountList
(
mShoppingCart
.
getNomalDiscoutByMultyDiscountList
());
mNomalDiscountAction
.
action
(
item
);
dialogFragment
.
dismiss
();
}
@Override
public
void
onCouponClick
(
MemberCoupon
item
,
int
position
)
{
if
(
item
.
getBillMinAmount
()
>
mShoppingCart
.
getWholeAmount
())
{
//小於最小賬單金額
mRootView
.
showMessage
(
"小於最小賬單金額"
+
cashStr
+
item
.
getBillMinAmount
()
+
" 無法使用此優惠券"
);
return
;
}
mNomalDiscountAction
.
setNomalDiscountList
(
mShoppingCart
.
getNomalDiscoutByMultyDiscountList
());
mNomalDiscountAction
.
action
(
item
.
castDiscount
());
dialogFragment
.
dismiss
();
}
});
dialogFragment
.
show
(
IActivity
.
getSupportFragmentManager
(),
"DiscountDialogFragment"
);
}
// if (mDiscountDialog == null) {
// mDiscountDialog = new DiscountDialog.Builder(IActivity);
// mDiscountDialog.setCanScan(true);
// mDiscountDialog.setOnClickListener(new DiscountDialog.Builder.OnClickListener() {
// if (IActivity.findFragment(DiscountDialogFragment.class) == null) {
// DiscountDialogFragment dialogFragment = DiscountDialogFragment.newInstance();
// dialogFragment.setOnDiscountItemClickListener(new DiscountDialogFragment.OnDiscountItemClickListener() {
//
// @Override
// public void on
Item
Click(Discount item, int position) {
// public void on
BillDiscount
Click(Discount item, int position) {
// if (item.getMinBillAmount() > mShoppingCart.getWholeAmount()) {
// //小於最小賬單金額
// mRootView.showMessage("小於最小賬單金額" + cashStr + item.getMinBillAmount() + " 無法使用此折扣");
...
...
@@ -857,23 +827,53 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
// }
// mNomalDiscountAction.setNomalDiscountList(mShoppingCart.getNomalDiscoutByMultyDiscountList());
// mNomalDiscountAction.action(item);
// dialogFragment.dismiss();
// }
//
// @Override
// public void onScan() {
// toScanActivity();
// public void onCouponClick(MemberCoupon item, int position) {
// if (item.getBillMinAmount() > mShoppingCart.getWholeAmount()) {
// //小於最小賬單金額
// mRootView.showMessage("小於最小賬單金額" + cashStr + item.getBillMinAmount() + " 無法使用此優惠券");
// return;
// }
// mNomalDiscountAction.setNomalDiscountList(mShoppingCart.getNomalDiscoutByMultyDiscountList());
// mNomalDiscountAction.action(item.castDiscount());
// dialogFragment.dismiss();
// }
// });
// dialogFragment.show(IActivity.getSupportFragmentManager(), "DiscountDialogFragment");
// }
// List<Discount> discountList;
// if (BaseOrder.isCurrentOrderType(FoodSummaryConstans.TAKEAWAY_TYPE)) {
// discountList = mModel.queryDB_DiscountList(Discount.discount_scope_bill, Discount.ORDER_TYPE_TAKEAWAY);
// } else {
// discountList = mModel.queryDB_DiscountList(Discount.discount_scope_bill, Discount.ORDER_TYPE_MEAL_STAND);
// }
//
// mDiscountDialog.addItems(discountList);
// mDiscountDialog.build().show();
if
(
mDiscountDialog
==
null
)
{
mDiscountDialog
=
new
DiscountDialog
.
Builder
(
IActivity
);
mDiscountDialog
.
setCanScan
(
true
);
mDiscountDialog
.
setOnClickListener
(
new
DiscountDialog
.
Builder
.
OnClickListener
()
{
@Override
public
void
onItemClick
(
Discount
item
,
int
position
)
{
if
(
item
.
getMinBillAmount
()
>
mShoppingCart
.
getWholeAmount
())
{
//小於最小賬單金額
mRootView
.
showMessage
(
"小於最小賬單金額"
+
cashStr
+
item
.
getMinBillAmount
()
+
" 無法使用此折扣"
);
return
;
}
mNomalDiscountAction
.
setNomalDiscountList
(
mShoppingCart
.
getNomalDiscoutByMultyDiscountList
());
mNomalDiscountAction
.
action
(
item
);
}
@Override
public
void
onScan
()
{
toScanActivity
();
}
});
}
List
<
Discount
>
discountList
;
if
(
BaseOrder
.
isCurrentOrderType
(
FoodSummaryConstans
.
TAKEAWAY_TYPE
))
{
discountList
=
mModel
.
queryDB_DiscountList
(
Discount
.
discount_scope_bill
,
Discount
.
ORDER_TYPE_TAKEAWAY
);
}
else
{
discountList
=
mModel
.
queryDB_DiscountList
(
Discount
.
discount_scope_bill
,
Discount
.
ORDER_TYPE_MEAL_STAND
);
}
mDiscountDialog
.
addItems
(
discountList
);
mDiscountDialog
.
build
().
show
();
}
/**
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/widget/DiscountDialog.java
View file @
689f9821
...
...
@@ -3,41 +3,30 @@ package com.gingersoft.gsa.cloud.table.mvp.ui.widget;
import
android.app.Dialog
;
import
android.content.Context
;
import
android.os.Bundle
;
import
android.view.Gravity
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.
view.WindowManager
;
import
android.
widget.ImageView
;
import
android.widget.LinearLayout
;
import
androidx.annotation.NonNull
;
import
androidx.core.content.ContextCompat
;
import
androidx.fragment.app.Fragment
;
import
androidx.fragment.app.FragmentActivity
;
import
androidx.recyclerview.widget.GridLayoutManager
;
import
androidx.recyclerview.widget.LinearLayoutManager
;
import
androidx.recyclerview.widget.RecyclerView
;
import
androidx.viewpager.widget.ViewPager
;
import
com.gingersoft.gsa.cloud.common.logan.LoganManager
;
import
com.gingersoft.gsa.cloud.database.bean.Discount
;
import
com.gingersoft.gsa.cloud.table.R
;
import
com.gingersoft.gsa.cloud.table.R2
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.DiscountAdapter
;
import
com.
jess.arms.utils.ThirdViewUtil
;
import
com.
qmuiteam.qmui.arch.QMUIFragmentPagerAdapter
;
import
com.
gingersoft.gsa.cloud.database.bean.Discount
;
import
com.
gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecoration
;
import
com.qmuiteam.qmui.layout.QMUILinearLayout
;
import
com.qmuiteam.qmui.util.QMUIDisplayHelper
;
import
com.qmuiteam.qmui.widget.QMUITopBar
;
import
com.qmuiteam.qmui.widget.tab.QMUITab
;
import
com.qmuiteam.qmui.widget.tab.QMUITabBuilder
;
import
com.qmuiteam.qmui.widget.tab.QMUITabIndicator
;
import
com.qmuiteam.qmui.widget.tab.QMUITabSegment
;
import
java.util.ArrayList
;
import
java.util.List
;
import
butterknife.BindView
;
import
butterknife.Unbinder
;
import
androidx.annotation.NonNull
;
import
androidx.core.content.ContextCompat
;
import
androidx.recyclerview.widget.DefaultItemAnimator
;
import
androidx.recyclerview.widget.GridLayoutManager
;
import
androidx.recyclerview.widget.LinearLayoutManager
;
import
androidx.recyclerview.widget.RecyclerView
;
import
lombok.Builder
;
/**
* 作者:ELEGANT_BIN
...
...
@@ -58,18 +47,6 @@ public class DiscountDialog extends Dialog {
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
//noinspection ConstantConditions
getWindow
().
getDecorView
().
setPadding
(
0
,
0
,
0
,
0
);
// 在底部,宽度撑满
WindowManager
.
LayoutParams
params
=
getWindow
().
getAttributes
();
params
.
height
=
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
;
params
.
gravity
=
Gravity
.
BOTTOM
|
Gravity
.
CENTER
;
int
screenWidth
=
QMUIDisplayHelper
.
getScreenWidth
(
getContext
());
int
screenHeight
=
QMUIDisplayHelper
.
getScreenHeight
(
getContext
());
params
.
width
=
screenWidth
<
screenHeight
?
screenWidth
:
screenHeight
;
getWindow
().
setAttributes
(
params
);
setCanceledOnTouchOutside
(
true
);
}
...
...
@@ -85,25 +62,7 @@ public class DiscountDialog extends Dialog {
public
static
class
Builder
implements
View
.
OnClickListener
{
// @BindView(R2.id.topbar)
// QMUITopBar topbar;
// @BindView(R2.id.recycler_discount)
// RecyclerView recyclerDiscount;
// @BindView(R2.id.tv_pager_indicator)
// PagerTabStrip tvPagerIndicator;
// @BindView(R2.id.ll_container)
// QMUILinearLayout llContainer;
@BindView
(
R2
.
id
.
topbar
)
QMUITopBar
topbar
;
@BindView
(
R2
.
id
.
tabSegment
)
QMUITabSegment
tabSegment
;
@BindView
(
R2
.
id
.
contentViewPager
)
ViewPager
contentViewPager
;
@BindView
(
R2
.
id
.
ll_container
)
QMUILinearLayout
llContainer
;
private
FragmentActivity
mContext
;
private
Context
mContext
;
private
DiscountDialog
mDialog
;
private
int
spanCount
=
3
;
...
...
@@ -116,17 +75,13 @@ public class DiscountDialog extends Dialog {
private
List
<
Discount
>
mItems
;
private
DiscountAdapter
mAdapter
;
private
Unbinder
mUnbinder
;
private
String
[]
mTabTitles
=
{
"折扣"
,
"優惠券"
};
private
QMUITopBar
mTopBar
;
private
QMUILinearLayout
ll_container
;
private
RecyclerView
recycler_discount
;
private
ImageView
btn_close
;
private
int
mCurrentPageIndex
=
0
;
// private QMUITopBar topbar;
// private QMUILinearLayout llContainer;
// private RecyclerView recyclerDiscount;
public
Builder
(
FragmentActivity
context
)
{
public
Builder
(
Context
context
)
{
mContext
=
context
;
mItems
=
new
ArrayList
<>();
mRadius
=
QMUIDisplayHelper
.
dp2px
(
mContext
,
8
);
...
...
@@ -157,112 +112,45 @@ public class DiscountDialog extends Dialog {
}
mDialog
=
new
DiscountDialog
(
mContext
);
View
contentView
=
buildViews
();
mDialog
.
setContentView
(
contentView
,
new
LinearLayout
.
LayoutParams
(
ViewGroup
.
LayoutParams
.
MATCH_PARENT
,(
int
)
(
QMUIDisplayHelper
.
getScreenHeight
(
mContext
)
*
0.65
)));
int
screenHeight
=
(
int
)
(
QMUIDisplayHelper
.
getScreenHeight
(
mContext
)
*
0.6
);
mDialog
.
setContentView
(
contentView
,
new
LinearLayout
.
LayoutParams
(
ViewGroup
.
LayoutParams
.
MATCH_PARENT
,
screenHeight
));
return
mDialog
;
}
private
View
buildViews
()
{
View
view
=
View
.
inflate
(
mContext
,
getContentViewLayoutId
(),
null
);
ThirdViewUtil
.
bindTarget
(
this
,
view
);
topbar
=
view
.
findViewById
(
R
.
id
.
topbar
);
// recyclerDiscount = view.findViewById(R.id.recycler_discount);
llContainer
=
view
.
findViewById
(
R
.
id
.
ll_container
);
// ll_container.setRadiusAndShadow(mRadius, QMUIDisplayHelper.dp2px(mContext, mShadowElevationDp), mShadowAlpha);
mTopBar
=
view
.
findViewById
(
R
.
id
.
topbar
);
recycler_discount
=
view
.
findViewById
(
R
.
id
.
recycler_discount
);
ll_container
=
view
.
findViewById
(
R
.
id
.
ll_container
);
// btn_close = view.findViewById(R.id.btn_close);
// btn_close.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// closeDialog() ;
// }
// });
ll_container
.
setRadiusAndShadow
(
mRadius
,
QMUIDisplayHelper
.
dp2px
(
mContext
,
mShadowElevationDp
),
mShadowAlpha
);
initTopbar
();
initTabAndPager
();
initDiscountRecycleView
();
return
view
;
}
private
void
initTabAndPager
()
{
QMUIFragmentPagerAdapter
pagerAdapter
=
new
QMUIFragmentPagerAdapter
(
mContext
.
getSupportFragmentManager
())
{
@Override
public
Fragment
createFragment
(
int
position
)
{
Bundle
bundle
=
new
Bundle
();
// switch (position) {
// case 1:
// if (allTableFragment != null) {
// return allTableFragment;
// }
// allTableFragment = RegionFragment.newInstance();
// bundle.putInt("currentPageIndex", FUNCTION_ALL_TABLE);
// allTableFragment.setArguments(bundle);
// return allTableFragment;
// default:
// if (inputTableFragment != null) {
// return inputTableFragment;
// }
// inputTableFragment = InputTableFragment.newInstance();
// return inputTableFragment;
// }
return
null
;
}
@Override
public
int
getCount
()
{
return
mTabTitles
.
length
;
}
@Override
public
CharSequence
getPageTitle
(
int
position
)
{
return
""
;
}
};
QMUITabBuilder
builder
=
tabSegment
.
tabBuilder
();
QMUITab
tab1
=
builder
.
setText
(
mTabTitles
[
0
])
.
build
(
mContext
);
QMUITab
tab2
=
builder
.
setText
(
mTabTitles
[
1
])
.
build
(
mContext
);
tabSegment
.
addTab
(
tab1
)
.
addTab
(
tab2
);
contentViewPager
.
setAdapter
(
pagerAdapter
);
contentViewPager
.
setCurrentItem
(
mCurrentPageIndex
);
int
space
=
QMUIDisplayHelper
.
dp2px
(
mContext
,
16
);
tabSegment
.
setIndicator
(
new
QMUITabIndicator
(
QMUIDisplayHelper
.
dp2px
(
mContext
,
2
),
false
,
true
));
tabSegment
.
setDefaultTextSize
(
QMUIDisplayHelper
.
dp2px
(
mContext
,
16
),
QMUIDisplayHelper
.
dp2px
(
mContext
,
16
));
tabSegment
.
setPadding
(
space
,
0
,
space
,
0
);
tabSegment
.
setupWithViewPager
(
contentViewPager
,
false
);
tabSegment
.
addOnTabSelectedListener
(
new
QMUITabSegment
.
OnTabSelectedListener
()
{
@Override
public
void
onTabSelected
(
int
index
)
{
LoganManager
.
w_tableMode
(
TAG
,
"當前頁面【"
+
mTabTitles
[
index
]
+
"】"
);
}
@Override
public
void
onTabUnselected
(
int
index
)
{
}
@Override
public
void
onTabReselected
(
int
index
)
{
}
@Override
public
void
onDoubleTap
(
int
index
)
{
}
});
}
private
void
initTopbar
()
{
if
(
mBagcolor
!=
0
)
{
topb
ar
.
setBackgroundColor
(
mBagcolor
);
mTopB
ar
.
setBackgroundColor
(
mBagcolor
);
}
else
{
topb
ar
.
setBackgroundColor
(
ContextCompat
.
getColor
(
mContext
,
R
.
color
.
theme_color
));
mTopB
ar
.
setBackgroundColor
(
ContextCompat
.
getColor
(
mContext
,
R
.
color
.
theme_color
));
}
if
(
canScan
)
{
topb
ar
.
addRightImageButton
(
R
.
mipmap
.
table_white_scan
,
R
.
id
.
topbar_right_change_button
)
mTopB
ar
.
addRightImageButton
(
R
.
mipmap
.
table_white_scan
,
R
.
id
.
topbar_right_change_button
)
.
setOnClickListener
(
v
->
{
if
(
onClickListener
!=
null
)
{
onClickListener
.
onScan
();
}
});
}
topb
ar
.
setTitle
(
"折扣"
);
mTopB
ar
.
setTitle
(
"折扣"
);
}
private
void
initDiscountRecycleView
()
{
...
...
@@ -275,10 +163,10 @@ public class DiscountDialog extends Dialog {
}
closeDialog
();
});
// recyclerD
iscount.addItemDecoration(new DividerItemDecoration(mContext, DividerItemDecoration.HORIZONTAL_LIST));
// recyclerD
iscount.setLayoutManager(createLayoutManager());
// recyclerD
iscount.setItemAnimator(new DefaultItemAnimator());
// recyclerD
iscount.setAdapter(mAdapter);
recycler_d
iscount
.
addItemDecoration
(
new
DividerItemDecoration
(
mContext
,
DividerItemDecoration
.
HORIZONTAL_LIST
));
recycler_d
iscount
.
setLayoutManager
(
createLayoutManager
());
recycler_d
iscount
.
setItemAnimator
(
new
DefaultItemAnimator
());
recycler_d
iscount
.
setAdapter
(
mAdapter
);
}
private
RecyclerView
.
LayoutManager
createLayoutManager
()
{
...
...
component-table/src/main/res/layout/table_dialog_discout.xml
View file @
689f9821
...
...
@@ -4,23 +4,30 @@
android:id=
"@+id/ll_container"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/theme_white_color"
android:orientation=
"vertical"
>
<!-- <com.qmuiteam.qmui.widget.QMUITopBar-->
<!-- android:id="@+id/topbar"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="@dimen/head_height"-->
<!-- app:qmui_topbar_title_color="@color/theme_white_color" />-->
<com.qmuiteam.qmui.widget.tab.QMUITabSegment
android:id=
"@+id/tabSegment"
<com.qmuiteam.qmui.widget.QMUITopBar
android:id=
"@+id/topbar"
android:layout_width=
"match_parent"
android:layout_height=
"
@dimen/dp_45
"
a
ndroid:background=
"@drawable/shape_tab_panel_bg
"
/>
android:layout_height=
"
?attr/qmui_topbar_height
"
a
pp:qmui_topbar_title_color=
"@color/theme_white_color
"
/>
<androidx.
viewpager.widget.ViewPager
android:id=
"@+id/
contentViewPager
"
<androidx.
recyclerview.widget.RecyclerView
android:id=
"@+id/
recycler_discount
"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
/>
android:layout_height=
"wrap_content"
android:divider=
"@null"
android:fadeScrollbars=
"false"
android:orientation=
"vertical"
app:layoutManager=
"androidx.recyclerview.widget.GridLayoutManager"
app:spanCount=
"3"
/>
<!-- <ImageView-->
<!-- android:id="@+id/btn_close"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_margin="@dimen/dp_20"-->
<!-- android:src="@drawable/icon_dialog_close" />-->
</com.qmuiteam.qmui.layout.QMUILinearLayout>
\ No newline at end of file
</com.qmuiteam.qmui.layout.QMUILinearLayout>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment