Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
W
wmpos_sdk_simple_demo
Project
Project
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
姜天宇
wmpos_sdk_simple_demo
Commits
836c8cc5
Commit
836c8cc5
authored
Jun 30, 2023
by
dizi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
补充提交
parent
241f791d
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
144 additions
and
118 deletions
+144
-118
build.gradle
app/build.gradle
+1
-1
WmAceKG_v1.0.59.2_sdk.aar
app/libs/WmAceKG_v1.0.59.2_sdk.aar
+0
-0
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+1
-1
list_product.txt
app/src/main/assets/list_product.txt
+7
-1
WmPosDemoApp.java
app/src/main/java/com/wmdigit/wmposdemo/WmPosDemoApp.java
+1
-1
ButtonAdapter.java
...ain/java/com/wmdigit/wmposdemo/adapter/ButtonAdapter.java
+43
-0
AiSupport.java
app/src/main/java/com/wmdigit/wmposdemo/model/AiSupport.java
+3
-1
ApiButton.java
...main/java/com/wmdigit/wmposdemo/model/bean/ApiButton.java
+28
-0
Constant.java
.../main/java/com/wmdigit/wmposdemo/model/data/Constant.java
+2
-2
CropPicActivity.java
...c/main/java/com/wmdigit/wmposdemo/ui/CropPicActivity.java
+0
-83
MainActivity.java
app/src/main/java/com/wmdigit/wmposdemo/ui/MainActivity.java
+3
-12
RegisterActivity.java
.../main/java/com/wmdigit/wmposdemo/ui/RegisterActivity.java
+5
-11
WeighingActivity.java
.../main/java/com/wmdigit/wmposdemo/ui/WeighingActivity.java
+12
-5
rect_5_white_gray.xml
app/src/main/res/drawable/rect_5_white_gray.xml
+11
-0
activity_register.xml
app/src/main/res/layout/activity_register.xml
+1
-0
item_button.xml
app/src/main/res/layout/item_button.xml
+26
-0
No files found.
app/build.gradle
View file @
836c8cc5
...
...
@@ -55,7 +55,7 @@ dependencies {
implementation
'androidx.constraintlayout:constraintlayout:2.0.4'
implementation
'net.sourceforge.jexcelapi:jxl:2.6.12'
implementation
'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.4'
implementation
files
(
'libs/WmAceKG_v1.0.59_sdk.aar'
)
implementation
files
(
'libs/WmAceKG_v1.0.59
.2
_sdk.aar'
)
testImplementation
'junit:junit:4.+'
def
room_version
=
'2.3.0'
implementation
"androidx.room:room-runtime:$room_version"
...
...
app/libs/WmAceKG_v1.0.59_sdk.aar
→
app/libs/WmAceKG_v1.0.59
.2
_sdk.aar
View file @
836c8cc5
No preview for this file type
app/src/main/AndroidManifest.xml
View file @
836c8cc5
...
...
@@ -34,7 +34,7 @@
<category
android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<
activity
android:name=
".ui.CropPicActivity"
/>
<
!-- 适配 Android 7.0 文件意图 -->
<!-- 适配 Android 7.0 文件意图 -->
<provider
android:name=
"androidx.core.content.FileProvider"
android:authorities=
"${applicationId}.provider"
...
...
app/src/main/assets/list_product.txt
View file @
836c8cc5
...
...
@@ -1997,4 +1997,10 @@
2237436 JP散装草头
2261035 JP迷你胡萝卜
2236280 JP精品芦蒿
2236523 JP散装薄荷叶
\ No newline at end of file
2236523 JP散装薄荷叶
2000001 红苹果
2000002 长茄子
2000003 迷你胡萝卜
2000004 黄瓜
2000005 水晶梨
2000006 山东红富士
\ No newline at end of file
app/src/main/java/com/wmdigit/wmposdemo/WmPosDemoApp.java
View file @
836c8cc5
...
...
@@ -21,7 +21,7 @@ public class WmPosDemoApp extends MultiDexApplication {
* 在manifest添加android:largeHeap="true"
* 注意第二个参数要传false
*/
int
code
=
WmAceKG
.
init
(
this
,
false
,
0
,
0.8
5
f
);
int
code
=
WmAceKG
.
init
(
this
,
false
,
0
,
0.8
0
f
);
}
@Override
...
...
app/src/main/java/com/wmdigit/wmposdemo/adapter/ButtonAdapter.java
View file @
836c8cc5
package
com
.
wmdigit
.
wmposdemo
.
adapter
;
import
android.text.Editable
;
import
android.text.TextUtils
;
import
android.text.TextWatcher
;
import
android.view.View
;
import
android.widget.EditText
;
import
com.chad.library.adapter.base.BaseQuickAdapter
;
import
com.chad.library.adapter.base.viewholder.BaseViewHolder
;
import
com.wmdigit.wmposdemo.R
;
...
...
@@ -35,5 +41,42 @@ public class ButtonAdapter extends BaseQuickAdapter<ApiButton, BaseViewHolder> {
baseViewHolder
.
setTextColorRes
(
R
.
id
.
tv_level
,
R
.
color
.
gray
);
break
;
}
// 参数输入框
if
(
apiButton
.
isEditTextEnable
()){
baseViewHolder
.
setVisible
(
R
.
id
.
edt_params
,
true
);
baseViewHolder
.
setVisible
(
R
.
id
.
tv_interface_title_3
,
true
);
baseViewHolder
.
setText
(
R
.
id
.
edt_params
,
apiButton
.
getDefaultParams
());
}
else
{
baseViewHolder
.
setGone
(
R
.
id
.
edt_params
,
true
);
baseViewHolder
.
setGone
(
R
.
id
.
tv_interface_title_3
,
true
);
baseViewHolder
.
setText
(
R
.
id
.
edt_params
,
""
);
}
TextWatcher
watcher
=
new
TextWatcher
()
{
@Override
public
void
beforeTextChanged
(
CharSequence
s
,
int
start
,
int
count
,
int
after
)
{
}
@Override
public
void
onTextChanged
(
CharSequence
s
,
int
start
,
int
before
,
int
count
)
{
}
@Override
public
void
afterTextChanged
(
Editable
s
)
{
if
(
TextUtils
.
isEmpty
(
s
.
toString
()))
{
apiButton
.
setDefaultParams
(
""
);
}
else
{
apiButton
.
setDefaultParams
(
s
.
toString
().
trim
());
}
}
};
EditText
edtParams
=
baseViewHolder
.
getView
(
R
.
id
.
edt_params
);
if
(
edtParams
.
getTag
()
instanceof
TextWatcher
){
edtParams
.
removeTextChangedListener
((
TextWatcher
)
edtParams
.
getTag
());
}
edtParams
.
addTextChangedListener
(
watcher
);
edtParams
.
setTag
(
watcher
);
}
}
app/src/main/java/com/wmdigit/wmposdemo/model/AiSupport.java
View file @
836c8cc5
package
com
.
wmdigit
.
wmposdemo
.
model
;
import
android.view.View
;
public
interface
AiSupport
{
void
initPosPage
();
void
setCameraId
();
...
...
@@ -25,6 +27,6 @@ public interface AiSupport {
void
learnLocalVectorDataI
();
void
correctI
();
void
autoMatchProduct
();
void
checkSnCodeVerification
();
void
checkSnCodeVerification
(
View
v
);
void
preLearningData
();
}
app/src/main/java/com/wmdigit/wmposdemo/model/bean/ApiButton.java
View file @
836c8cc5
...
...
@@ -5,12 +5,15 @@ public class ApiButton {
private
String
methodName
;
private
String
methodDesc
;
private
ApiLevel
level
;
private
boolean
editTextEnable
;
private
String
defaultParams
=
""
;
public
ApiButton
(
String
methodNo
,
String
methodName
,
String
methodDesc
)
{
this
.
methodNo
=
methodNo
;
this
.
methodName
=
methodName
;
this
.
methodDesc
=
methodDesc
;
this
.
level
=
ApiLevel
.
LEVEL_NORMAL
;
this
.
editTextEnable
=
false
;
}
public
ApiButton
(
String
methodNo
,
String
methodName
,
String
methodDesc
,
ApiLevel
level
)
{
...
...
@@ -18,6 +21,31 @@ public class ApiButton {
this
.
methodName
=
methodName
;
this
.
methodDesc
=
methodDesc
;
this
.
level
=
level
;
this
.
editTextEnable
=
false
;
}
public
ApiButton
(
String
methodNo
,
String
methodName
,
String
methodDesc
,
ApiLevel
level
,
boolean
editTextEnable
)
{
this
.
methodNo
=
methodNo
;
this
.
methodName
=
methodName
;
this
.
methodDesc
=
methodDesc
;
this
.
level
=
level
;
this
.
editTextEnable
=
editTextEnable
;
}
public
String
getDefaultParams
()
{
return
defaultParams
;
}
public
void
setDefaultParams
(
String
defaultParams
)
{
this
.
defaultParams
=
defaultParams
;
}
public
boolean
isEditTextEnable
()
{
return
editTextEnable
;
}
public
void
setEditTextEnable
(
boolean
editTextEnable
)
{
this
.
editTextEnable
=
editTextEnable
;
}
public
String
getMethodName
()
{
...
...
app/src/main/java/com/wmdigit/wmposdemo/model/data/Constant.java
View file @
836c8cc5
...
...
@@ -10,7 +10,7 @@ public class Constant {
// false-正式环境;true-测试环境 通常情况下,请用正式环境false
public
static
final
boolean
isDebug
=
false
;
// 这三条为注册信息,调试时请更换为我们通过邮件发给你的信息,其中POS_CODE可自定义,但不要重复
public
static
final
String
SN_CODE
=
"C15936F9-ECBD-4DBD-8EED-FD0A83D6042A"
;
//
public static final String SN_CODE = "C15936F9-ECBD-4DBD-8EED-FD0A83D6042A";
public
static
final
String
POS_CODE
=
"0022_0095"
;
public
static
final
String
TENANT
=
"demo"
;
// 压力测试用,PLU随机范围
...
...
@@ -46,7 +46,7 @@ public class Constant {
add
(
new
ApiButton
(
"3.27"
,
"learnLocalVectorData"
,
"学习本地特征数据"
));
add
(
new
ApiButton
(
"3.28"
,
"correct"
,
"纠错"
));
add
(
new
ApiButton
(
"3.29"
,
"thumbnailsAutoMatch"
,
"商品自动配图"
));
add
(
new
ApiButton
(
"3.30"
,
"checkSnCodeVerification"
,
"校验SN码合法性"
));
add
(
new
ApiButton
(
"3.30"
,
"checkSnCodeVerification"
,
"校验SN码合法性"
,
ApiLevel
.
LEVEL_NORMAL
,
true
));
add
(
new
ApiButton
(
"3.31"
,
"preLearning"
,
"预学习商品数据"
));
}
};
...
...
app/src/main/java/com/wmdigit/wmposdemo/ui/CropPicActivity.java
deleted
100644 → 0
View file @
241f791d
package
com
.
wmdigit
.
wmposdemo
.
ui
;
import
android.content.Intent
;
import
android.graphics.Bitmap
;
import
android.os.Bundle
;
import
android.view.TextureView
;
import
android.view.View
;
import
android.widget.Toast
;
import
androidx.databinding.DataBindingUtil
;
import
com.wmdigit.wmpos.WmAceKG
;
import
com.wmdigit.wmpos.ai.support.AiSupportActivity
;
import
com.wmdigit.wmpos.bean.ScaleBitmap
;
import
com.wmdigit.wmpos.bean.ScaleSetting
;
import
com.wmdigit.wmpos.cam.support.CamSupportActivity
;
import
com.wmdigit.wmposdemo.R
;
import
com.wmdigit.wmposdemo.databinding.ActivityCropPicBinding
;
import
com.wmdigit.wmposdemo.view.CropView
;
public
class
CropPicActivity
extends
AiSupportActivity
implements
View
.
OnClickListener
{
private
ActivityCropPicBinding
dataBinding
;
TextureView
textCameraView
;
@Override
public
void
onCreate
(
Bundle
savedInstanceState
)
{
dataBinding
=
DataBindingUtil
.
setContentView
(
this
,
R
.
layout
.
activity_crop_pic
);
// setContentView(R.layout.activity_crop_pic);
textCameraView
=
findViewById
(
R
.
id
.
text_camera_view
);
super
.
onCreate
(
savedInstanceState
);
dataBinding
.
tvSure
.
setOnClickListener
(
this
);
dataBinding
.
tvCancel
.
setOnClickListener
(
this
);
dataBinding
.
tvCrop
.
setOnClickListener
(
this
);
}
@Override
public
TextureView
getTextureView
()
{
return
textCameraView
;
}
@Override
public
void
onClick
(
View
v
)
{
switch
(
v
.
getId
())
{
case
R
.
id
.
tv_crop
:
dataBinding
.
rlPreview
.
setVisibility
(
View
.
GONE
);
dataBinding
.
rlCrop
.
setVisibility
(
View
.
VISIBLE
);
final
ScaleBitmap
clearestScaleBitmap
=
getScaleBitmap
(
false
);
Bitmap
raw
=
clearestScaleBitmap
.
getRaw
();
dataBinding
.
cropImg
.
setImageBitmap
(
raw
);
break
;
case
R
.
id
.
tv_sure
:
dataBinding
.
cropImg
.
cropImage
(
new
CropView
.
OnCropListener
()
{
@Override
public
void
onCropFinished
(
final
Bitmap
bitmap
,
final
int
left
,
final
int
top
,
final
int
width
,
final
int
height
)
{
runOnUiThread
(
new
Runnable
()
{
@Override
public
void
run
()
{
ScaleSetting
scaleSetting
=
new
ScaleSetting
(
left
,
top
,
width
,
height
);
int
code
=
WmAceKG
.
saveScaleSetting
(
scaleSetting
);
if
(
code
==
0
)
{
Toast
.
makeText
(
CropPicActivity
.
this
,
"设置成功"
,
Toast
.
LENGTH_SHORT
).
show
();
Intent
intent
=
new
Intent
(
CropPicActivity
.
this
,
WeighingActivity
.
class
);
startActivity
(
intent
);
finish
();
}
else
{
Toast
.
makeText
(
CropPicActivity
.
this
,
"设置失敗,错误码:"
+
code
,
Toast
.
LENGTH_SHORT
).
show
();
}
}
});
}
});
break
;
case
R
.
id
.
tv_cancel
:
finish
();
break
;
}
}
}
app/src/main/java/com/wmdigit/wmposdemo/ui/MainActivity.java
View file @
836c8cc5
...
...
@@ -37,22 +37,13 @@ public class MainActivity extends AppCompatActivity {
binding
.
tvRecognition
.
setOnClickListener
(
v
->
{
boolean
isBind
=
SPStaticUtils
.
getBoolean
(
Constant
.
BIND
,
false
);
if
(
isBind
)
{
boolean
isScale
=
WmAceKG
.
getScaleSetting
();
if
(!
isScale
)
{
toast
(
"您还未裁剪秤盘,为您跳转至裁剪页"
);
Intent
intent
=
new
Intent
(
MainActivity
.
this
,
CropPicActivity
.
class
);
startActivity
(
intent
);
finish
();
}
else
{
toast
(
"获取秤盘信息成功,为您跳转至识别功能页"
);
Intent
intent1
=
new
Intent
(
MainActivity
.
this
,
WeighingActivity
.
class
);
startActivity
(
intent1
);
}
Intent
intent1
=
new
Intent
(
MainActivity
.
this
,
WeighingActivity
.
class
);
startActivity
(
intent1
);
}
else
{
toast
(
"您还未给pos机绑定SN号,为您跳转至注册页"
);
Intent
intent
=
new
Intent
(
this
,
RegisterActivity
.
class
);
startActivity
(
intent
);
}
finish
();
});
binding
.
tvRegister
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
...
...
app/src/main/java/com/wmdigit/wmposdemo/ui/RegisterActivity.java
View file @
836c8cc5
...
...
@@ -34,7 +34,7 @@ public class RegisterActivity extends AppCompatActivity {
WmAceKG
.
queryPosByMac
(
new
OnQueryPosRegisterInfoListener
()
{
@Override
public
void
onSuccess
(
String
posId
,
String
snCode
,
String
tenant
)
{
Toast
.
makeText
(
RegisterActivity
.
this
,
"获取注册信息成功
,已为您自动填写
"
,
Toast
.
LENGTH_SHORT
).
show
();
Toast
.
makeText
(
RegisterActivity
.
this
,
"获取注册信息成功"
,
Toast
.
LENGTH_SHORT
).
show
();
binding
.
posEdit
.
setText
(
posId
);
binding
.
posSnCode
.
setText
(
snCode
);
binding
.
accountCompany
.
setText
(
tenant
);
...
...
@@ -79,16 +79,10 @@ public class RegisterActivity extends AppCompatActivity {
SPStaticUtils
.
put
(
Constant
.
POS_CODE
,
pos
);
SPStaticUtils
.
put
(
Constant
.
SN_CODE
,
snCode
);
SPStaticUtils
.
put
(
Constant
.
BIND
,
true
);
boolean
isScale
=
WmAceKG
.
getScaleSetting
();
if
(!
isScale
)
{
Toast
.
makeText
(
RegisterActivity
.
this
,
"您未裁剪秤盘,为您跳转至裁剪页"
,
Toast
.
LENGTH_SHORT
).
show
();
Intent
intent
=
new
Intent
(
RegisterActivity
.
this
,
CropPicActivity
.
class
);
startActivity
(
intent
);
finish
();
}
else
{
Intent
intent1
=
new
Intent
(
RegisterActivity
.
this
,
WeighingActivity
.
class
);
startActivity
(
intent1
);
}
Intent
intent1
=
new
Intent
(
RegisterActivity
.
this
,
WeighingActivity
.
class
);
startActivity
(
intent1
);
finish
();
}
});
});
...
...
app/src/main/java/com/wmdigit/wmposdemo/ui/WeighingActivity.java
View file @
836c8cc5
package
com
.
wmdigit
.
wmposdemo
.
ui
;
import
static
com
.
wmdigit
.
wmposdemo
.
utils
.
Constant
.
SN_CODE
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.content.res.AssetManager
;
...
...
@@ -12,6 +14,7 @@ import android.text.method.ScrollingMovementMethod;
import
android.util.Log
;
import
android.view.TextureView
;
import
android.view.View
;
import
android.widget.EditText
;
import
android.widget.Toast
;
import
androidx.annotation.NonNull
;
...
...
@@ -29,6 +32,7 @@ import com.wmdigit.wmpos.bean.ImageProductBean;
import
com.wmdigit.wmpos.bean.ProductMatch
;
import
com.wmdigit.wmpos.bean.ScaleBitmap
;
import
com.wmdigit.wmpos.bean.ScaleSetting
;
import
com.wmdigit.wmpos.dao.repository.impl.ProductSelfLearnRepository
;
import
com.wmdigit.wmpos.http.OnCheckSnCodeVerificationListener
;
import
com.wmdigit.wmpos.http.OnProductMatchListener
;
import
com.wmdigit.wmpos.http.OnQueryPosRegisterInfoListener
;
...
...
@@ -36,6 +40,7 @@ import com.wmdigit.wmpos.http.OnUnBindPosListener;
import
com.wmdigit.wmpos.listener.OnBitmapSaveListener
;
import
com.wmdigit.wmpos.listener.OnDataExportListener
;
import
com.wmdigit.wmpos.listener.OnPreLearningListener
;
import
com.wmdigit.wmpos.utils.SPStaticUtils
;
import
com.wmdigit.wmpos.utils.StopWatch
;
import
com.wmdigit.wmposdemo.R
;
import
com.wmdigit.wmposdemo.adapter.ButtonAdapter
;
...
...
@@ -154,7 +159,10 @@ public class WeighingActivity extends AiSupportActivity implements OnItemClickLi
public
void
initData
()
{
context
=
this
;
random
=
new
Random
(
1
);
// 初始化data
buttonList
=
Constant
.
API_BUTTONS
;
buttonList
.
get
(
28
).
setDefaultParams
(
SPStaticUtils
.
getString
(
SN_CODE
,
""
));
adapter
=
new
ButtonAdapter
(
R
.
layout
.
item_button
,
Constant
.
API_BUTTONS
);
weighingBinding
.
rvButtons
.
setAdapter
(
adapter
);
GridLayoutManager
gridLayoutManager
=
new
GridLayoutManager
(
this
,
ScreenUtils
.
isScreenLandscape
(
this
)
?
5
:
3
);
...
...
@@ -268,7 +276,7 @@ public class WeighingActivity extends AiSupportActivity implements OnItemClickLi
case
"3.30"
:
// 校验SN合法性
checkSnCodeVerification
();
checkSnCodeVerification
(
view
);
break
;
case
"3.31"
:
...
...
@@ -338,7 +346,7 @@ public class WeighingActivity extends AiSupportActivity implements OnItemClickLi
@Override
public
void
unBindPos
()
{
WmAceKG
.
unBindPos
(
Constant
.
TENANT
,
Constant
.
SN_CODE
,
new
OnUnBindPosListener
()
{
WmAceKG
.
unBindPos
(
Constant
.
TENANT
,
SN_CODE
,
new
OnUnBindPosListener
()
{
@Override
public
void
unBindFail
(
int
code
,
String
message
)
{
weighingBinding
.
tvInfo
.
setText
(
"解绑失败:"
+
code
+
","
+
message
);
...
...
@@ -645,10 +653,9 @@ public class WeighingActivity extends AiSupportActivity implements OnItemClickLi
}
@Override
public
void
checkSnCodeVerification
()
{
public
void
checkSnCodeVerification
(
View
view
)
{
// 检验SN合法性
// todo snCode请替换成设备真实SN
String
snCode
=
"77C4AD47-04B3-47B7-B9DF-A55D91F9E0BA"
;
String
snCode
=
((
EditText
)
view
.
findViewById
(
R
.
id
.
edt_params
)).
getText
().
toString
();
weighingBinding
.
tvInfo
.
setText
(
"正在校验SN合法性:"
+
snCode
+
"\n"
);
// 第二个参数为接口网络请求的超时时间
WmAceKG
.
checkSnCodeVerification
(
snCode
,
1L
,
new
OnCheckSnCodeVerificationListener
()
{
...
...
app/src/main/res/drawable/rect_5_white_gray.xml
0 → 100644
View file @
836c8cc5
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<corners
android:radius=
"5dp"
/>
<solid
android:color=
"@color/white"
/>
<stroke
android:width=
"1dp"
android:color=
"@color/gray"
/>
</shape>
\ No newline at end of file
app/src/main/res/layout/activity_register.xml
View file @
836c8cc5
...
...
@@ -156,6 +156,7 @@
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:padding=
"10dp"
android:text=
"3.26 查询POS注册信息"
android:layout_marginTop=
"10dp"
android:textSize=
"20sp"
...
...
app/src/main/res/layout/item_button.xml
View file @
836c8cc5
...
...
@@ -101,6 +101,32 @@
app:layout_constraintEnd_toEndOf=
"parent"
/>
<TextView
android:id=
"@+id/tv_interface_title_3"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"参数:"
android:textSize=
"18sp"
android:textColor=
"#787878"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"@+id/edt_params"
app:layout_constraintBottom_toBottomOf=
"@+id/edt_params"
/>
<EditText
android:id=
"@+id/edt_params"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:textSize=
"18sp"
android:textColor=
"@color/black"
android:background=
"@drawable/rect_5_white_gray"
android:padding=
"8dp"
android:layout_marginTop=
"5dp"
android:singleLine=
"true"
app:layout_constraintStart_toStartOf=
"@+id/tv_interface_desc"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/tv_interface_desc"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
\ No newline at end of file
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