Browse Source

dev to test new order select

dev
赵明涛 5 days ago
parent
commit
e742f8d701
  1. 279
      app/src/main/java/com/ouxuan/oxface/orderOX/adapter/OrderSelectionAdapter.java
  2. 56
      app/src/main/java/com/ouxuan/oxface/orderOX/model/OrderVerificationData.java
  3. 32
      app/src/main/res/drawable/coupon_background.xml
  4. 9
      app/src/main/res/drawable/dashed_line.xml
  5. 6
      app/src/main/res/drawable/many_enter_tag_background.xml
  6. 9
      app/src/main/res/drawable/order_type_background.xml
  7. 10
      app/src/main/res/drawable/verify_button_background.xml
  8. 97
      app/src/main/res/layout/activity_order_selection.xml
  9. 211
      app/src/main/res/layout/item_order_selection.xml

279
app/src/main/java/com/ouxuan/oxface/orderOX/adapter/OrderSelectionAdapter.java

@ -3,6 +3,7 @@ package com.ouxuan.oxface.orderOX.adapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
@ -11,7 +12,7 @@ import com.ouxuan.oxface.orderOX.model.OrderVerificationData;
import java.util.List;
/**
* 订单选择列表适配器
* 订单选择列表适配器 - 重构版支持多种订单类型显示
*/
public class OrderSelectionAdapter extends RecyclerView.Adapter<OrderSelectionAdapter.OrderViewHolder> {
@ -63,28 +64,27 @@ public class OrderSelectionAdapter extends RecyclerView.Adapter<OrderSelectionAd
public void onBindViewHolder(@NonNull OrderViewHolder holder, int position) {
OrderVerificationData.OrderItem order = orderList.get(position);
// 设置订单信息
int sessionCount = order.getNumber() > 0 ? order.getNumber() : 1;
holder.tvOrderTitle.setText("订单信息 (共" + sessionCount + "场次)");
// 设置订单类型标签
String typeLabel = getOrderTypeLabel(order.getOrder_type());
holder.tvOrderTypeLabel.setText(typeLabel);
String orderNo = order.getOrder_no() != null ? order.getOrder_no() : "未知订单号";
holder.tvOrderNumber.setText("订单编号:" + orderNo);
// 设置订单信息标题
String orderTitle = getOrderTitle(order);
holder.tvOrderTitle.setText(orderTitle);
// 设置预订信息
String projectName = order.getProjectName();
String timeInfo = order.getFormattedTimeInfo();
String bookingInfo = projectName + " " + timeInfo + ";";
holder.tvBookingInfo.setText("预订信息:" + bookingInfo);
// 设置核销按钮文本
String buttonText = order.getOrder_type() == 5 ? "签到" : "去核销";
holder.tvVerifyButton.setText(buttonText);
holder.tvProjectName.setText("预订项目:" + projectName);
holder.tvUsageDate.setText("使用日期:" + order.getFormattedUsageDate());
// 根据订单类型显示不同的详细信息
setupOrderDetails(holder, order);
// 设置选中状态
if (position == selectedPosition) {
holder.itemView.setBackgroundResource(R.drawable.gate_imageview_radius);
holder.itemView.setSelected(true);
} else {
holder.itemView.setBackgroundResource(R.drawable.gate_radius_compare);
holder.itemView.setBackgroundResource(R.drawable.coupon_background);
holder.itemView.setSelected(false);
}
@ -104,7 +104,242 @@ public class OrderSelectionAdapter extends RecyclerView.Adapter<OrderSelectionAd
});
// 添加调试日志
android.util.Log.d("OrderSelectionAdapter", "绑定订单 " + position + ": " + orderNo + ", 项目: " + projectName);
android.util.Log.d("OrderSelectionAdapter", "绑定订单 " + position + ": " + order.getOrder_no() + ", 类型: " + order.getOrder_type());
}
/**
* 获取订单类型标签
*/
private String getOrderTypeLabel(int orderType) {
switch (orderType) {
case 0:
return "场\n次";
case 1:
return "人\n次";
case 3:
return "年\n月\n卡";
case 5:
return "课\n程";
default:
return "订\n单";
}
}
/**
* 获取订单标题
*/
private String getOrderTitle(OrderVerificationData.OrderItem order) {
switch (order.getOrder_type()) {
case 0:
return "订单信息(共" + order.getNumber() + "场次)";
case 1:
return "订单信息(人次票,共" + order.getNumber() + "张票,现可用" + order.getSuccess() + "张票)";
case 3:
return "订单信息(年月卡,每天可使用" + order.getNumber() + "次,今天已使用" + order.getSuccess() + "次)";
case 5:
String kind = order.getInfo() != null && order.getInfo().getKind() != null ? order.getInfo().getKind() : "";
return "订单信息(课程签到," + kind + ")";
default:
return "订单信息";
}
}
/**
* 根据订单类型设置详细信息
*/
private void setupOrderDetails(OrderViewHolder holder, OrderVerificationData.OrderItem order) {
// 清空之前的视图
holder.layoutOrderDetails.removeAllViews();
int orderType = order.getOrder_type();
if (orderType == 0 || orderType == 1) {
// 订场场次 人次票
setupFieldInfo(holder, order);
} else if (orderType == 3) {
// 年月卡
setupCardInfo(holder, order);
} else if (orderType == 5) {
// 课程
setupCourseInfo(holder, order);
}
}
/**
* 设置场次/人次票信息
*/
private void setupFieldInfo(OrderViewHolder holder, OrderVerificationData.OrderItem order) {
// 订单编号
addInfoLine(holder, "订单编号:", order.getOrder_no() != null ? order.getOrder_no() : "", order.isMany_enter());
// 预订信息
String bookingInfo = order.getOrder_type() == 1 ?
(order.getProject() != null ? order.getProject() : "") :
getFormattedVenueInfo(order);
addInfoLine(holder, "预订信息:", bookingInfo, false);
// 预订项目
addInfoLine(holder, "预订项目:", order.getProject() != null ? order.getProject() : "", false);
// 使用日期
String usageDate = order.getOrder_type() == 0 ?
(order.getEnd_time() != null ? formatDate(order.getEnd_time()) + "(" + getWeekDay(order.getEnd_time()) + ")" : "") :
(order.getEnd_time() != null ? order.getEnd_time() + "到期" : "-到期");
addInfoLine(holder, "使用日期:", usageDate, false);
}
/**
* 设置年月卡信息
*/
private void setupCardInfo(OrderViewHolder holder, OrderVerificationData.OrderItem order) {
// 年月卡号
String cardNo = order.getInfo() != null && order.getInfo().getCard_no() != null ?
"NO." + order.getInfo().getCard_no() : "";
addInfoLine(holder, "年月卡号:", cardNo, false);
// 年月卡名称
addInfoLine(holder, "年月卡名称:", order.getProject() != null ? order.getProject() : "", false);
// 剩余可使用
int restNumber = order.getInfo() != null ? order.getInfo().getRest_number() : 0;
addInfoLine(holder, "剩余可使用:", restNumber + "次", false);
// 进场状态
String status = order.getInfo() != null && order.getInfo().getStatus() == 1 ? "已进场" : "未进场";
addInfoLine(holder, "进场状态:", status, false);
// 有效期
String validity = order.getEnd_time() != null ? order.getEnd_time() + "到期" : "-到期";
addInfoLine(holder, "有效期:", validity, false);
}
/**
* 设置课程信息
*/
private void setupCourseInfo(OrderViewHolder holder, OrderVerificationData.OrderItem order) {
// 订单编号
addInfoLine(holder, "订单编号:", order.getOrder_no() != null ? order.getOrder_no() : "-", false);
// 课程名称
addInfoLine(holder, "课程名称:", order.getProject() != null ? order.getProject() : "-", false);
// 上课时间
String classTime = order.getInfo() != null && order.getInfo().getTime() != null ?
order.getInfo().getTime() : "-";
addInfoLine(holder, "上课时间:", classTime, false);
// 上课教练
String coach = order.getInfo() != null && order.getInfo().getCoach() != null ?
order.getInfo().getCoach() : "-";
addInfoLine(holder, "上课教练:", coach, false);
// 上课地点
String addr = order.getInfo() != null && order.getInfo().getAddr() != null ?
order.getInfo().getAddr() : "-";
addInfoLine(holder, "上课地点:", addr, false);
}
/**
* 添加信息行
*/
private void addInfoLine(OrderViewHolder holder, String label, String value, boolean showManyEnterTag) {
LinearLayout lineLayout = new LinearLayout(holder.itemView.getContext());
lineLayout.setOrientation(LinearLayout.HORIZONTAL);
lineLayout.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT
));
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) lineLayout.getLayoutParams();
layoutParams.setMargins(0, dpToPx(holder.itemView.getContext(), 8), 0, 0);
lineLayout.setLayoutParams(layoutParams);
// 标签
TextView labelView = new TextView(holder.itemView.getContext());
labelView.setText(label);
labelView.setTextColor(0xFF9A9A9D);
labelView.setTextSize(12);
LinearLayout.LayoutParams labelParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT
);
labelView.setLayoutParams(labelParams);
//
TextView valueView = new TextView(holder.itemView.getContext());
valueView.setText(value);
valueView.setTextColor(0xFF1B1B1B);
valueView.setTextSize(12);
LinearLayout.LayoutParams valueParams = new LinearLayout.LayoutParams(
0,
LinearLayout.LayoutParams.WRAP_CONTENT,
1.0f
);
valueView.setLayoutParams(valueParams);
lineLayout.addView(labelView);
lineLayout.addView(valueView);
// 如果需要显示"可多次进出"标签
if (showManyEnterTag) {
TextView tagView = new TextView(holder.itemView.getContext());
tagView.setText("可多次进出");
tagView.setTextColor(0xFFE60012);
tagView.setTextSize(10);
tagView.setBackgroundResource(R.drawable.many_enter_tag_background);
tagView.setPadding(dpToPx(holder.itemView.getContext(), 6),
dpToPx(holder.itemView.getContext(), 2),
dpToPx(holder.itemView.getContext(), 6),
dpToPx(holder.itemView.getContext(), 2));
LinearLayout.LayoutParams tagParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT
);
tagParams.setMargins(dpToPx(holder.itemView.getContext(), 12), 0, 0, 0);
tagView.setLayoutParams(tagParams);
lineLayout.addView(tagView);
}
holder.layoutOrderDetails.addView(lineLayout);
}
/**
* 获取格式化的场馆信息
*/
private String getFormattedVenueInfo(OrderVerificationData.OrderItem order) {
// 这里可以根据实际的info结构来解析场馆信息
// 由于当前数据模型中没有详细的场馆信息结构所以使用简化逻辑
String timeInfo = order.getFormattedTimeInfo();
String projectName = order.getProjectName();
return projectName + " " + timeInfo;
}
/**
* 格式化日期
*/
private String formatDate(String dateTime) {
if (dateTime != null && dateTime.length() >= 10) {
return dateTime.substring(0, 10);
}
return "";
}
/**
* 获取星期几
*/
private String getWeekDay(String dateTime) {
// 简化实现实际可以根据日期计算星期几
return "今天";
}
/**
* dp转px
*/
private int dpToPx(android.content.Context context, int dp) {
float density = context.getResources().getDisplayMetrics().density;
return Math.round(dp * density);
}
@Override
@ -113,23 +348,17 @@ public class OrderSelectionAdapter extends RecyclerView.Adapter<OrderSelectionAd
}
static class OrderViewHolder extends RecyclerView.ViewHolder {
TextView tvSessionLabel;
TextView tvOrderTypeLabel;
TextView tvOrderTitle;
TextView tvOrderNumber;
TextView tvBookingInfo;
TextView tvProjectName;
TextView tvUsageDate;
TextView tvVerifyButton;
LinearLayout layoutOrderDetails;
public OrderViewHolder(@NonNull View itemView) {
super(itemView);
tvSessionLabel = itemView.findViewById(R.id.tv_session_label);
tvOrderTypeLabel = itemView.findViewById(R.id.tv_order_type_label);
tvOrderTitle = itemView.findViewById(R.id.tv_order_title);
tvOrderNumber = itemView.findViewById(R.id.tv_order_number);
tvBookingInfo = itemView.findViewById(R.id.tv_booking_info);
tvProjectName = itemView.findViewById(R.id.tv_project_name);
tvUsageDate = itemView.findViewById(R.id.tv_usage_date);
tvVerifyButton = itemView.findViewById(R.id.tv_verify_button);
layoutOrderDetails = itemView.findViewById(R.id.layout_order_details);
}
}
}

56
app/src/main/java/com/ouxuan/oxface/orderOX/model/OrderVerificationData.java

@ -52,6 +52,14 @@ public class OrderVerificationData {
private int status;
private String user_face_id;
// 课程相关信息
private String kind; // 课程类型
private String time; // 上课时间
private String coach; // 教练
private String addr; // 地点
private String venue_name; // 场馆名称
private String start; // 开始时间
public String getCard_no() {
return card_no;
}
@ -83,6 +91,54 @@ public class OrderVerificationData {
public void setUser_face_id(String user_face_id) {
this.user_face_id = user_face_id;
}
public String getKind() {
return kind;
}
public void setKind(String kind) {
this.kind = kind;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getCoach() {
return coach;
}
public void setCoach(String coach) {
this.coach = coach;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public String getVenue_name() {
return venue_name;
}
public void setVenue_name(String venue_name) {
this.venue_name = venue_name;
}
public String getStart() {
return start;
}
public void setStart(String start) {
this.start = start;
}
}
// Getters and Setters

32
app/src/main/res/drawable/coupon_background.xml

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 主背景 -->
<item>
<shape android:shape="rectangle">
<solid android:color="#FFFFFF" />
<corners android:radius="8dp" />
</shape>
</item>
<!-- 模拟左侧半圆形切口效果 -->
<item
android:left="118dp"
android:top="-5dp"
android:bottom="-5dp">
<shape android:shape="oval">
<solid android:color="#00000000" /> <!-- 透明 -->
<size android:width="10dp" android:height="10dp" />
</shape>
</item>
<!-- 模拟右侧半圆形切口效果 -->
<item
android:right="-5dp"
android:top="-5dp"
android:bottom="-5dp">
<shape android:shape="oval">
<solid android:color="#00000000" /> <!-- 透明 -->
<size android:width="10dp" android:height="10dp" />
</shape>
</item>
</layer-list>

9
app/src/main/res/drawable/dashed_line.xml

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="1dp"
android:color="#9A9A9D"
android:dashWidth="8dp"
android:dashGap="4dp" />
</shape>

6
app/src/main/res/drawable/many_enter_tag_background.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#e600121a" />
<corners android:radius="3dp" />
</shape>

9
app/src/main/res/drawable/order_type_background.xml

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="180"
android:startColor="#FCD68C"
android:endColor="#F6B44A" />
<corners android:radius="6dp" />
</shape>

10
app/src/main/res/drawable/verify_button_background.xml

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#009874" />
<corners
android:topLeftRadius="0dp"
android:topRightRadius="0dp"
android:bottomLeftRadius="38dp"
android:bottomRightRadius="0dp" />
</shape>

97
app/src/main/res/layout/activity_order_selection.xml

@ -3,25 +3,14 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#80000000">
<!-- 主弹窗容器 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:background="@drawable/dialog_background"
android:orientation="vertical"
android:padding="0dp"
android:minHeight="500dp">
android:background="@drawable/gradient_background">
<!-- 顶部标题栏 -->
<RelativeLayout
android:id="@+id/top_bar"
android:layout_width="match_parent"
android:layout_height="80dp"
android:background="@drawable/gradient_background"
android:layout_alignParentTop="true"
android:paddingLeft="20dp"
android:paddingRight="20dp">
@ -68,58 +57,98 @@
android:paddingTop="8dp"
android:paddingRight="12dp"
android:paddingBottom="8dp"
android:text="返回首页(06s)"
android:text="返回首页(60s)"
android:textColor="@android:color/white"
android:textSize="14sp" />
</RelativeLayout>
<!-- 主内容区域 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/top_bar"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:gravity="center_horizontal"
android:orientation="vertical">
<!-- 标题 -->
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:gravity="center"
android:layout_marginBottom="20dp"
android:text="请选择订单核销"
android:textColor="@android:color/black"
android:textColor="@android:color/white"
android:textSize="24sp"
android:textStyle="bold" />
<!-- 核销日期 -->
<TextView
android:id="@+id/tv_verification_date"
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginTop="20dp"
android:layout_marginRight="20dp"
android:text="核销日期:2025-09-04"
android:textColor="#666666"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_marginBottom="10dp"
android:gravity="right"
android:text="核销日期:2025-09-09"
android:textColor="@android:color/white"
android:textSize="14sp" />
<!-- 订单列表 -->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_order_list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_marginBottom="20dp" />
<!-- 无订单提示 -->
<LinearLayout
android:id="@+id/layout_no_order"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:gravity="center"
android:orientation="vertical"
android:visibility="gone">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:maxHeight="500dp"
android:minHeight="200dp"
android:paddingLeft="15dp"
android:paddingRight="15dp" />
android:text="您好,欢迎光临Test门店!"
android:textColor="@android:color/white"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tv_no_order_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:lineSpacingMultiplier="1.2"
android:text="很抱歉,暂时没找到您的订单信息!!\n请您在小程序会员中心核实您的订单信息是否可用,或再次尝试进行人脸识别核验!"
android:textColor="@android:color/white"
android:textSize="16sp" />
</LinearLayout>
<!-- 底部操作按钮 -->
<LinearLayout
android:id="@+id/layout_bottom_buttons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginBottom="30dp"
android:gravity="center"
android:orientation="horizontal"
android:paddingLeft="40dp"
android:paddingRight="40dp">
android:paddingLeft="30dp"
android:paddingRight="30dp"
android:visibility="gone">
<Button
android:id="@+id/btn_cancel"

211
app/src/main/res/layout/item_order_selection.xml

@ -1,127 +1,216 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="15dp"
android:background="@drawable/gate_radius_compare"
android:layout_marginBottom="10dp"
android:background="@drawable/coupon_background"
android:clickable="true"
android:focusable="true"
android:orientation="horizontal"
android:padding="0dp">
android:minHeight="150dp">
<!-- 左侧场次标识 -->
<!-- 左侧订单类型标识 -->
<RelativeLayout
android:layout_width="100dp"
android:id="@+id/layout_order_type"
android:layout_width="120dp"
android:layout_height="match_parent"
android:background="@drawable/gradient_button"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:gravity="center"
android:minHeight="140dp">
android:paddingTop="20dp"
android:paddingBottom="20dp">
<TextView
android:id="@+id/tv_session_label"
android:id="@+id/tv_order_type_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@drawable/order_type_background"
android:gravity="center"
android:paddingLeft="24dp"
android:paddingTop="24dp"
android:paddingRight="24dp"
android:paddingBottom="24dp"
android:text="场\n次"
android:textColor="@android:color/white"
android:textSize="20sp"
android:textSize="18sp"
android:textStyle="bold" />
</RelativeLayout>
<!-- 虚线分隔 -->
<View
android:layout_width="2dp"
android:id="@+id/divider_line"
android:layout_width="1dp"
android:layout_height="match_parent"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:background="#E0E0E0" />
android:layout_marginTop="12dp"
android:layout_marginBottom="12dp"
android:layout_toRightOf="@id/layout_order_type"
android:background="@drawable/dashed_line" />
<!-- 右侧订单信息 -->
<LinearLayout
android:layout_width="0dp"
android:id="@+id/layout_order_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
android:padding="20dp"
android:minHeight="140dp">
android:layout_toRightOf="@id/divider_line"
android:layout_marginLeft="18dp"
android:layout_marginTop="20dp"
android:layout_marginRight="140dp"
android:layout_marginBottom="20dp"
android:orientation="vertical">
<!-- 订单信息标题 -->
<TextView
android:id="@+id/tv_order_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="6dp"
android:text="订单信息(共4场次)"
android:textColor="#1B1B1B"
android:textSize="12sp"
android:textStyle="bold" />
<!-- 订单信息列表 -->
<LinearLayout
android:id="@+id/layout_order_details"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="vertical">
<!-- 订单编号 -->
<LinearLayout
android:id="@+id/layout_order_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_order_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="订单编号:"
android:textColor="#9A9A9D"
android:textSize="12sp" />
<TextView
android:id="@+id/tv_order_number"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="订单信息 (共4场次)"
android:textColor="@android:color/black"
android:textSize="16sp"
android:textStyle="bold" />
android:text="CC20250904093324823098"
android:textColor="#1B1B1B"
android:textSize="12sp" />
<!-- 去核销按钮 -->
<TextView
android:id="@+id/tv_verify_button"
android:id="@+id/tv_many_enter_tag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/primary_color_rounded_background"
android:clickable="true"
android:focusable="true"
android:paddingLeft="20dp"
android:paddingTop="8dp"
android:paddingRight="20dp"
android:paddingBottom="8dp"
android:text="去核销"
android:textColor="@android:color/white"
android:textSize="14sp" />
android:layout_marginLeft="12dp"
android:background="@drawable/many_enter_tag_background"
android:paddingLeft="6dp"
android:paddingTop="2dp"
android:paddingRight="6dp"
android:paddingBottom="2dp"
android:text="可多次进出"
android:textColor="#E60012"
android:textSize="10sp"
android:textStyle="bold"
android:visibility="gone" />
</LinearLayout>
<!-- 订单编号 -->
<TextView
android:id="@+id/tv_order_number"
<!-- 预订信息 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="订单编号:CC20250904093324823098"
android:textColor="#666666"
android:textSize="14sp" />
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="预订信息:"
android:textColor="#9A9A9D"
android:textSize="12sp" />
<!-- 预订信息 -->
<TextView
android:id="@+id/tv_booking_info"
android:layout_width="match_parent"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="预订信息:篮球2号馆 16:30-17:00;"
android:textColor="#666666"
android:textSize="14sp" />
android:layout_weight="1"
android:text="篮球2号馆 16:30-17:00"
android:textColor="#1B1B1B"
android:textSize="12sp" />
</LinearLayout>
<!-- 预订项目 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="预订项目:"
android:textColor="#9A9A9D"
android:textSize="12sp" />
<TextView
android:id="@+id/tv_project_name"
android:layout_width="match_parent"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="预订项目:篮球"
android:textColor="#666666"
android:textSize="14sp" />
android:layout_weight="1"
android:text="篮球"
android:textColor="#1B1B1B"
android:textSize="12sp" />
</LinearLayout>
<!-- 使用日期 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="使用日期:"
android:textColor="#9A9A9D"
android:textSize="12sp" />
<TextView
android:id="@+id/tv_usage_date"
android:layout_width="match_parent"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="使用日期:2025-09-04 (今天)"
android:textColor="#666666"
android:textSize="14sp" />
android:layout_weight="1"
android:text="2025-09-04(今天)"
android:textColor="#1B1B1B"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<!-- 右上角核销按钮 -->
<TextView
android:id="@+id/tv_verify_button"
android:layout_width="90dp"
android:layout_height="40dp"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:background="@drawable/verify_button_background"
android:clickable="true"
android:focusable="true"
android:gravity="center"
android:text="去核销"
android:textColor="@android:color/white"
android:textSize="14sp" />
</RelativeLayout>
Loading…
Cancel
Save