From bd4891e2fd6b773cbb0ec387f6db4bc944fdf51a Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期一, 31 三月 2025 18:07:51 +0800 Subject: [PATCH] feat(generallibrary): 添加卡片列表功能并优化登录逻辑 --- generallibrary/src/main/java/com/dayu/general/net/NetConstans.kt | 4 generallibrary/src/main/java/com/dayu/general/activity/BSCardFragment.kt | 2 app/src/main/AndroidManifest.xml | 5 generallibrary/src/main/java/com/dayu/general/view/CardSearchDialog.kt | 74 ++++++ generallibrary/src/main/java/com/dayu/general/activity/MyFragment.kt | 18 + app/src/main/java/com/dayu/recharge/MyApplication.java | 3 generallibrary/src/main/res/layout/dialog_card_search.xml | 142 ++++++++++++ generallibrary/src/main/res/layout/activity_card_list.xml | 45 ++++ baselibrary/src/main/res/layout/confirm_dialog.xml | 4 generallibrary/src/main/AndroidManifest.xml | 1 generallibrary/src/main/res/layout/item_card_list.xml | 104 +++++++++ generallibrary/src/main/res/values/colors.xml | 1 generallibrary/src/main/java/com/dayu/general/activity/CardListActivity.kt | 209 ++++++++++++++++++ app/build.gradle | 2 14 files changed, 599 insertions(+), 15 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index cd537e8..6a96054 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,7 +3,7 @@ android { signingConfigs { debug { - storeFile file(myValue) + storeFile file("${project.rootDir}/dycz.jks") storePassword 'dycz@2023' keyAlias 'dayu' keyPassword 'dycz@2023' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7d52f81..c0de339 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,6 +48,11 @@ <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> + <!-- 娣诲姞鑷畾涔塧ction鐨刬ntent-filter锛岀敤浜庝粠generallibrary涓惎鍔ㄦActivity --> + <intent-filter> + <action android:name="com.dayu.recharge.action.LOGIN" /> + <category android:name="android.intent.category.DEFAULT" /> + </intent-filter> </activity> <meta-data android:name="BUGLY_APP_VERSION" diff --git a/app/src/main/java/com/dayu/recharge/MyApplication.java b/app/src/main/java/com/dayu/recharge/MyApplication.java index 1aa6969..0aa434c 100644 --- a/app/src/main/java/com/dayu/recharge/MyApplication.java +++ b/app/src/main/java/com/dayu/recharge/MyApplication.java @@ -1,6 +1,5 @@ package com.dayu.recharge; -import android.app.Activity; import android.app.Application; import android.content.Context; import android.content.Intent; @@ -41,6 +40,7 @@ } catch (Exception e) { e.printStackTrace(); } + initApplication(); BaseApplication.getInstance().onCreat(this); CrashReport.initCrashReport(getApplicationContext(), "45551598b8", true); @@ -70,6 +70,7 @@ break; case BaseCommon.Generalv1Library: com.dayu.general.BaseApplication.getInstance(this); + BusinessProvider.getInstance(this); break; } } diff --git a/baselibrary/src/main/res/layout/confirm_dialog.xml b/baselibrary/src/main/res/layout/confirm_dialog.xml index 109888b..32e0b2a 100644 --- a/baselibrary/src/main/res/layout/confirm_dialog.xml +++ b/baselibrary/src/main/res/layout/confirm_dialog.xml @@ -42,7 +42,7 @@ <View android:layout_width="match_parent" - android:layout_height="2px" + android:layout_height="1dp" android:layout_marginTop="20dp" android:background="@color/line_bg" /> @@ -64,7 +64,7 @@ android:textSize="20sp" /> <View - android:layout_width="2px" + android:layout_width="1dp" android:layout_height="match_parent" android:background="@color/line_bg" /> diff --git a/generallibrary/src/main/AndroidManifest.xml b/generallibrary/src/main/AndroidManifest.xml index 99e8411..32912b8 100644 --- a/generallibrary/src/main/AndroidManifest.xml +++ b/generallibrary/src/main/AndroidManifest.xml @@ -71,6 +71,7 @@ <data android:mimeType="text/plain" /> </intent-filter> </activity> + <activity android:name=".activity.CardListActivity"/> diff --git a/generallibrary/src/main/java/com/dayu/general/activity/BSCardFragment.kt b/generallibrary/src/main/java/com/dayu/general/activity/BSCardFragment.kt index b89fecf..2a5ad7c 100644 --- a/generallibrary/src/main/java/com/dayu/general/activity/BSCardFragment.kt +++ b/generallibrary/src/main/java/com/dayu/general/activity/BSCardFragment.kt @@ -43,7 +43,7 @@ startActivity(intent) } binding?.homeLossLL?.setOnClickListener { - val intent = Intent(context, SearchUserActivity::class.java).apply{ + val intent = Intent(context, CardListActivity::class.java).apply{ putExtra("type", "loss") } startActivity(intent) diff --git a/generallibrary/src/main/java/com/dayu/general/activity/CardListActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/CardListActivity.kt index bfd1ded..43874cd 100644 --- a/generallibrary/src/main/java/com/dayu/general/activity/CardListActivity.kt +++ b/generallibrary/src/main/java/com/dayu/general/activity/CardListActivity.kt @@ -1,9 +1,216 @@ package com.dayu.general.activity -class CardListActivity:BaseActivity() { +import android.os.Bundle +import androidx.recyclerview.widget.LinearLayoutManager +import com.dayu.baselibrary.net.subscribers.SubscriberListener +import com.dayu.baselibrary.utils.ToastUtil +import com.dayu.baselibrary.view.TitleBar.ClickType_LEFT_IMAGE +import com.dayu.baselibrary.view.TitleBar.ClickType_RIGHT_IMAGE +import com.dayu.general.adapter.CardListAdapter +import com.dayu.general.bean.net.SearchCardResult +import com.dayu.general.databinding.ActivityCardListBinding +import com.dayu.general.view.CardSearchDialog +import com.dayu.general.net.ApiManager +import com.dayu.general.net.BaseResponse +import com.scwang.smart.refresh.layout.api.RefreshLayout +import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener +/** + * @author: zuo + * @date: 2023/3/31 + * @description: 鍗$墖鍒楄〃鐣岄潰 + */ +class CardListActivity : BaseActivity() { + var binding: ActivityCardListBinding? = null + private var cardAdapter: CardListAdapter? = null + var searchDialog: CardSearchDialog? = null + + // 鍒嗛〉鐩稿叧鍙橀噺 + private var currentPage = 1 + private val pageSize = 20 + private var hasMoreData = true + + // 淇濆瓨褰撳墠鎼滅储鏉′欢 + private var currentCardNumber = "" + private var currentClientNumber = "" + private var currentClientName = "" + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityCardListBinding.inflate(layoutInflater) + setContentView(binding?.root) + initView() + setupRecyclerView() + setupRefreshLayout() + } + fun initView() { + searchDialog = CardSearchDialog(this) + searchDialog?.show() + binding?.titleBar?.setOnItemclickListner(ClickType_LEFT_IMAGE) { this.finish() } + // 璁剧疆鎼滅储鐩戝惉鍣� + searchDialog?.setOnSearchListener(object : CardSearchDialog.OnSearchListener { + override fun onSearch(cardNumber: String, clientNumber: String, clientName: String) { + // 淇濆瓨褰撳墠鎼滅储鏉′欢 + currentCardNumber = cardNumber + currentClientNumber = clientNumber + currentClientName = clientName + + // 閲嶇疆鍒嗛〉鐘舵�� + currentPage = 1 + hasMoreData = true + + // 鎵ц鎼滅储 + searchCards(cardNumber, clientNumber, clientName, true) + } + }) + binding?.titleBar?.setOnItemclickListner(ClickType_RIGHT_IMAGE) { + // 鏄剧ず鎼滅储瀵硅瘽妗� + searchDialog?.show() + } + } + private fun setupRecyclerView() { + cardAdapter = CardListAdapter() + binding?.recyclerView?.apply { + layoutManager = LinearLayoutManager(this@CardListActivity) + adapter = cardAdapter + } + + // 璁剧疆鍒楄〃椤圭偣鍑讳簨浠� + cardAdapter?.setOnItemClickListener { card -> + // 澶勭悊鍗$墖鐐瑰嚮浜嬩欢 + ToastUtil.show("宸查�夋嫨鍗$墖锛�${card.cardNum}") + // 杩欓噷鍙互娣诲姞璺宠浆鍒板崱鐗囪鎯呴〉闈㈢殑閫昏緫 + // val intent = Intent(this, CardDetailActivity::class.java) + // intent.putExtra("cardNum", card.cardNum) + // startActivity(intent) + } + } + + private fun setupRefreshLayout() { + binding?.refreshLayout?.apply { + // 璁剧疆鍒锋柊鍜屽姞杞芥洿澶氱洃鍚櫒 + setOnRefreshLoadMoreListener(object : OnRefreshLoadMoreListener { + override fun onRefresh(refreshLayout: RefreshLayout) { + // 閲嶇疆椤电爜骞跺埛鏂版暟鎹� + currentPage = 1 + hasMoreData = true + searchCards(currentCardNumber, currentClientNumber, currentClientName, true) + } + + override fun onLoadMore(refreshLayout: RefreshLayout) { + // 濡傛灉杩樻湁鏇村鏁版嵁锛屽姞杞戒笅涓�椤� + if (hasMoreData) { + currentPage++ + searchCards(currentCardNumber, currentClientNumber, currentClientName, false) + } else { + // 瀹屾垚鍔犺浇骞舵彁绀烘病鏈夋洿澶氭暟鎹� + refreshLayout.finishLoadMore(500, true, false) + ToastUtil.show("娌℃湁鏇村鏁版嵁浜�") + } + } + }) + } + } + + /** + * 鏍规嵁鍗″彿銆佸鎴风紪鍙峰拰瀹㈡埛濮撳悕鎼滅储鍗$墖 + * + * 姝ゅ嚱鏁版瀯寤轰竴涓弬鏁版槧灏勶紝鏍规嵁鎻愪緵鐨勫崱鍙枫�佸鎴风紪鍙峰拰瀹㈡埛濮撳悕鏉ユ悳绱㈠崱鐗� + * 瀹冧粎鍖呭惈鏈夋晥鐨勩�侀潪绌虹殑鎼滅储鍙傛暟锛屼互纭繚鎼滅储璇锋眰鐨勫噯纭�у拰鏁堢巼 + * + * @param cardNumber 鍗″彿 + * @param clientNumber 瀹㈡埛缂栧彿 + * @param clientName 瀹㈡埛濮撳悕 + * @param isRefresh 鏄惁涓哄埛鏂版搷浣� + */ + private fun searchCards(cardNumber: String, clientNumber: String, clientName: String, isRefresh: Boolean = true) { + val map = mutableMapOf<String, Any>() + + if (cardNumber.isNotEmpty()) { + map["cardNum"] = cardNumber + } + + if (clientNumber.isNotEmpty()) { + map["clientNum"] = clientNumber + } + + if (clientName.isNotEmpty()) { + map["clientName"] = clientName + } + + // 娣诲姞鍒嗛〉鍙傛暟 + map["pageCurr"] = currentPage + map["pageSize"] = pageSize + + // 浣跨敤姝g‘鐨勭被鍨嬪弬鏁� + ApiManager.getInstance().requestGetLoading( + this, + "sell/clientcard/getcards", + SearchCardResult::class.java, + map, + object : SubscriberListener<BaseResponse<SearchCardResult>>() { + override fun onNext(t: BaseResponse<SearchCardResult>) { + // 瀹屾垚鍒锋柊鎴栧姞杞藉姩浣� + finishRefreshOrLoad(isRefresh) + + if (t.success) { + // 澶勭悊鎼滅储鎴愬姛鐨勬儏鍐� + val result = t.content + if (result != null) { + // 澶勭悊鎼滅储缁撴灉 + if (result.obj.isNotEmpty()) { + // 鏍规嵁鏄惁涓哄埛鏂版搷浣滃喅瀹氬浣曟洿鏂版暟鎹� + if (isRefresh) { + cardAdapter?.setData(result.obj) + } else { + cardAdapter?.addData(result.obj) + } + + // 鍒ゆ柇鏄惁杩樻湁鏇村鏁版嵁锛氭牴鎹綋鍓嶉〉鐮佸拰鎬婚〉鏁板垽鏂� + hasMoreData = currentPage < result.pageTotal + } else { + if (isRefresh) { + cardAdapter?.setData(emptyList()) + ToastUtil.show("鏈壘鍒板尮閰嶇殑鍗$墖") + } else { + hasMoreData = false + ToastUtil.show("娌℃湁鏇村鏁版嵁浜�") + } + } + } else { + if (isRefresh) { + cardAdapter?.setData(emptyList()) + ToastUtil.show("鏈壘鍒板尮閰嶇殑鍗$墖") + } + } + } else { + // 澶勭悊鎼滅储澶辫触鐨勬儏鍐� + ToastUtil.show(t.msg) + } + } + + override fun onError(e: Throwable?) { + super.onError(e) + // 瀹屾垚鍒锋柊鎴栧姞杞藉姩浣� + finishRefreshOrLoad(isRefresh) + ToastUtil.show("鎼滅储澶辫触: ${e?.message ?: "鏈煡閿欒"}") + } + } + ) + } + + /** + * 瀹屾垚鍒锋柊鎴栧姞杞芥搷浣� + * @param isRefresh 鏄惁涓哄埛鏂版搷浣� + */ + private fun finishRefreshOrLoad(isRefresh: Boolean) { + if (isRefresh) { + binding?.refreshLayout?.finishRefresh(true) + } else { + binding?.refreshLayout?.finishLoadMore(true) + } + } } \ No newline at end of file diff --git a/generallibrary/src/main/java/com/dayu/general/activity/MyFragment.kt b/generallibrary/src/main/java/com/dayu/general/activity/MyFragment.kt index bb3bf41..0276426 100644 --- a/generallibrary/src/main/java/com/dayu/general/activity/MyFragment.kt +++ b/generallibrary/src/main/java/com/dayu/general/activity/MyFragment.kt @@ -1,11 +1,12 @@ package com.dayu.general.activity -import android.content.Intent import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment +import com.dayu.baselibrary.business.BusinessProvider +import com.dayu.baselibrary.view.ConfirmDialog import com.dayu.general.BaseApplication import com.dayu.general.databinding.FragmentMyBinding @@ -18,7 +19,10 @@ ): View? { binding = FragmentMyBinding.inflate(inflater, container, false) binding?.logoutRL?.setOnClickListener { - logout() + ConfirmDialog(requireContext(), "鎻愮ず", "纭畾瑕侀��鍑虹櫥褰曞悧锛�") { + logout() + }.show() + } return binding?.root } @@ -51,10 +55,10 @@ binding?.myName?.text = "鏈櫥褰�" binding?.myPhone?.text = "鏈櫥褰�" binding?.myAdName?.text = "鏈櫥褰�" - var intent= Intent(activity,LoginActivity::class.java) - startActivity(intent) - activity?.finish() + + // 浣跨敤璺敱绠$悊鍣ㄨ烦杞埌鐧诲綍椤甸潰 + context?.let { + BusinessProvider.getBusinessProvider().startLoginNavigotor.navigateToLogin(context) + } } - - } \ No newline at end of file diff --git a/generallibrary/src/main/java/com/dayu/general/net/NetConstans.kt b/generallibrary/src/main/java/com/dayu/general/net/NetConstans.kt index 8e10e79..42a877f 100644 --- a/generallibrary/src/main/java/com/dayu/general/net/NetConstans.kt +++ b/generallibrary/src/main/java/com/dayu/general/net/NetConstans.kt @@ -7,8 +7,8 @@ */ class NetConstans { companion object { -// const val BASE_URL: String = "https://no253541tf71.vicp.fun/" - const val BASE_URL: String = "http://192.168.40.166:54321/" + const val BASE_URL: String = "https://no253541tf71.vicp.fun/" +// const val BASE_URL: String = "http://192.168.40.166:54321/" const val TOKEN_INVALID: String = "0000" } diff --git a/generallibrary/src/main/java/com/dayu/general/view/CardSearchDialog.kt b/generallibrary/src/main/java/com/dayu/general/view/CardSearchDialog.kt new file mode 100644 index 0000000..cf0d808 --- /dev/null +++ b/generallibrary/src/main/java/com/dayu/general/view/CardSearchDialog.kt @@ -0,0 +1,74 @@ +package com.dayu.general.view + +import android.app.Dialog +import android.content.Context +import android.os.Bundle +import android.view.Gravity +import android.view.LayoutInflater +import android.view.ViewGroup +import com.dayu.general.databinding.DialogCardSearchBinding + +/** + * 鍗$墖鎼滅储瀵硅瘽妗� + * 鐢ㄤ簬鎼滅储鍗″彿銆佸鎴风紪鍙枫�佸鎴峰鍚� + */ +class CardSearchDialog(context: Context) : Dialog(context) { + + private lateinit var binding: DialogCardSearchBinding + private var onSearchListener: OnSearchListener? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = DialogCardSearchBinding.inflate(LayoutInflater.from(context)) + setContentView(binding.root) + + // 璁剧疆瀵硅瘽妗嗗搴︿负灞忓箷瀹藉害鐨�85% + window?.apply { + val params = attributes + params.width = (context.resources.displayMetrics.widthPixels * 0.85).toInt() + params.height = ViewGroup.LayoutParams.WRAP_CONTENT + params.gravity = Gravity.CENTER + attributes = params + setBackgroundDrawableResource(android.R.color.transparent) + } + + // 璁剧疆鐐瑰嚮澶栭儴涓嶅彇娑堝璇濇 + setCanceledOnTouchOutside(false) + + // 璁剧疆鎼滅储鎸夐挳鐐瑰嚮浜嬩欢 + binding.btnSearch.setOnClickListener { + val cardNumber = binding.etCardNumber.text.toString().trim() + val clientNumber = binding.etClientNumber.text.toString().trim() + val clientName = binding.etClientName.text.toString().trim() + + // 鍥炶皟鎼滅储浜嬩欢 + onSearchListener?.onSearch(cardNumber, clientNumber, clientName) + dismiss() + } + + // 璁剧疆鍙栨秷鎸夐挳鐐瑰嚮浜嬩欢 + binding.tvCancel.setOnClickListener { + dismiss() + } + } + + /** + * 璁剧疆鎼滅储鐩戝惉鍣� + */ + fun setOnSearchListener(listener: OnSearchListener) { + this.onSearchListener = listener + } + + /** + * 鎼滅储鐩戝惉鍣ㄦ帴鍙� + */ + interface OnSearchListener { + /** + * 鎼滅储鍥炶皟鏂规硶 + * @param cardNumber 鍗″彿 + * @param clientNumber 瀹㈡埛缂栧彿 + * @param clientName 瀹㈡埛濮撳悕 + */ + fun onSearch(cardNumber: String, clientNumber: String, clientName: String) + } +} \ No newline at end of file diff --git a/generallibrary/src/main/res/layout/activity_card_list.xml b/generallibrary/src/main/res/layout/activity_card_list.xml new file mode 100644 index 0000000..5a14bb8 --- /dev/null +++ b/generallibrary/src/main/res/layout/activity_card_list.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + tools:context=".activity.CardListActivity"> + + <com.dayu.baselibrary.view.TitleBar + android:id="@+id/title_bar" + android:layout_width="match_parent" + android:layout_height="@dimen/dimen_title_height" + app:centerText="鍗$墖鍒楄〃" + app:layout_constraintTop_toTopOf="parent" + app:leftImage="@mipmap/icon_back" + app:rightImage="@mipmap/icon_search" /> + + <com.scwang.smart.refresh.layout.SmartRefreshLayout + android:id="@+id/refresh_layout" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:srlAccentColor="@color/colorPrimary" + app:srlEnablePreviewInEditMode="true"> + + <com.scwang.smart.refresh.header.ClassicsHeader + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/recycler_view" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:paddingTop="8dp" + android:paddingBottom="8dp" + android:clipToPadding="false" + android:overScrollMode="never" /> + + <com.scwang.smart.refresh.footer.ClassicsFooter + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + + </com.scwang.smart.refresh.layout.SmartRefreshLayout> + +</LinearLayout> \ No newline at end of file diff --git a/generallibrary/src/main/res/layout/dialog_card_search.xml b/generallibrary/src/main/res/layout/dialog_card_search.xml new file mode 100644 index 0000000..840da8d --- /dev/null +++ b/generallibrary/src/main/res/layout/dialog_card_search.xml @@ -0,0 +1,142 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@drawable/search_dialog_bg" + android:padding="20dp"> + + <TextView + android:id="@+id/tv_title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鍗$墖鎼滅储" + android:textColor="@color/black" + android:textSize="20sp" + android:textStyle="bold" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <View + android:id="@+id/divider" + android:layout_width="match_parent" + android:layout_height="1dp" + android:layout_marginTop="12dp" + android:background="#E0E0E0" + app:layout_constraintTop_toBottomOf="@id/tv_title" /> + + <TextView + android:id="@+id/tv_card_number_label" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="16dp" + android:text="鍗″彿" + android:textColor="#666666" + android:textSize="14sp" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintTop_toBottomOf="@id/divider" /> + + <EditText + android:id="@+id/et_card_number" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="6dp" + android:background="@drawable/edit_text_bg" + android:hint="璇疯緭鍏ュ崱鍙�" + android:inputType="text" + android:singleLine="true" + android:textColorHint="#BBBBBB" + android:textSize="15sp" + app:layout_constraintTop_toBottomOf="@id/tv_card_number_label" /> + + <TextView + android:id="@+id/tv_client_number_label" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="14dp" + android:text="瀹㈡埛缂栧彿" + android:textColor="#666666" + android:textSize="14sp" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintTop_toBottomOf="@id/et_card_number" /> + + <EditText + android:id="@+id/et_client_number" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="6dp" + android:background="@drawable/edit_text_bg" + android:hint="璇疯緭鍏ュ鎴风紪鍙�" + android:inputType="text" + android:singleLine="true" + android:textColorHint="#BBBBBB" + android:textSize="15sp" + app:layout_constraintTop_toBottomOf="@id/tv_client_number_label" /> + + <TextView + android:id="@+id/tv_client_name_label" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="14dp" + android:text="瀹㈡埛濮撳悕" + android:textColor="#666666" + android:textSize="14sp" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintTop_toBottomOf="@id/et_client_number" /> + + <EditText + android:id="@+id/et_client_name" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="6dp" + android:background="@drawable/edit_text_bg" + android:hint="璇疯緭鍏ュ鎴峰鍚�" + android:inputType="text" + android:singleLine="true" + android:textColorHint="#BBBBBB" + android:textSize="15sp" + app:layout_constraintTop_toBottomOf="@id/tv_client_name_label" /> + + <Button + android:id="@+id/tv_cancel" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="24dp" + android:layout_marginEnd="6dp" + android:background="@drawable/cancel_button_ripple" + android:clickable="true" + android:focusable="true" + android:paddingTop="10dp" + android:paddingBottom="10dp" + android:stateListAnimator="@null" + android:text="鍙栨秷" + android:textColor="#666666" + android:textSize="15sp" + app:layout_constraintEnd_toStartOf="@id/btn_search" + app:layout_constraintHorizontal_chainStyle="packed" + app:layout_constraintHorizontal_weight="1" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/et_client_name" /> + + <Button + android:id="@+id/btn_search" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="6dp" + android:background="@drawable/search_button_ripple" + android:clickable="true" + android:elevation="2dp" + android:focusable="true" + android:paddingTop="12dp" + android:paddingBottom="12dp" + android:stateListAnimator="@null" + android:text="鎼滅储" + android:textColor="@android:color/white" + android:textSize="16sp" + android:textStyle="bold" + app:layout_constraintBaseline_toBaselineOf="@id/tv_cancel" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_weight="1" + app:layout_constraintStart_toEndOf="@id/tv_cancel" /> + +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/generallibrary/src/main/res/layout/item_card_list.xml b/generallibrary/src/main/res/layout/item_card_list.xml new file mode 100644 index 0000000..c470e47 --- /dev/null +++ b/generallibrary/src/main/res/layout/item_card_list.xml @@ -0,0 +1,104 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginHorizontal="12dp" + android:layout_marginVertical="6dp" + app:cardCornerRadius="8dp" + app:cardElevation="2dp"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="12dp"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <TextView + android:id="@+id/tv_card_number" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="鍗″彿锛�5323281010060000" + android:textColor="@color/black" + android:textSize="16sp" + android:textStyle="bold" /> + + <TextView + android:id="@+id/tv_card_status" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鐘舵�侊細姝e父" + android:textColor="@color/green" + android:textSize="14sp" /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:orientation="horizontal"> + + <TextView + android:id="@+id/tv_card_type" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="鍗$被鍨嬶細鍐滄埛鍗�" + android:textColor="@color/black" + android:textSize="14sp" /> + + <TextView + android:id="@+id/tv_card_balance" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="浣欓锛�90.97 鍏�" + android:textColor="@color/black" + android:textSize="14sp" + android:textStyle="bold" /> + </LinearLayout> + + <TextView + android:id="@+id/tv_client_name" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:text="濮撳悕锛氭潕鍥�" + android:textColor="@color/black" + android:textSize="14sp" /> + + <TextView + android:id="@+id/tv_client_num" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="4dp" + android:text="瀹㈡埛缂栧彿锛�281010060002" + android:textColor="@color/black" + android:textSize="14sp" /> + + <TextView + android:id="@+id/tv_phone" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="4dp" + android:text="鐢佃瘽锛�156****4561" + android:textColor="@color/black" + android:textSize="14sp" /> + + <TextView + android:id="@+id/tv_id_card" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="4dp" + android:text="韬唤璇侊細3402****1245" + android:textColor="@color/black" + android:textSize="14sp" + android:visibility="visible" /> + + </LinearLayout> +</androidx.cardview.widget.CardView> \ No newline at end of file diff --git a/generallibrary/src/main/res/values/colors.xml b/generallibrary/src/main/res/values/colors.xml index 5729a42..b812742 100644 --- a/generallibrary/src/main/res/values/colors.xml +++ b/generallibrary/src/main/res/values/colors.xml @@ -5,5 +5,6 @@ <color name="white">#fff</color> <color name="nav_item_color">#555555</color> <color name="base_list_bg">#e6e6e6</color> + <color name="green">#32CD32</color> </resources> \ No newline at end of file -- Gitblit v1.8.0