Files
hospital-rescue-app-v2/uni_modules/tmx-ui/core/android/cardView.uts
T
2026-09-24 16:25:22 +08:00

242 lines
6.2 KiB
Plaintext

import Context from 'android.content.Context'
import LinearLayout from 'android.widget.LinearLayout';
import RelativeLayout from 'android.widget.RelativeLayout';
import ViewGroup from 'android.view.ViewGroup';
import View from 'android.view.View';
import TextView from 'android.widget.TextView';
import ImageView from 'android.widget.ImageView';
import Gravity from 'android.view.Gravity';
import Color from 'android.graphics.Color';
import Activity from 'android.app.Activity';
// import CardView from 'androidx.cardview.widget.CardView';
import { ref, } from "vue"
import TextUtils from 'android.text.TextUtils';
import GradientDrawable from 'android.graphics.drawable.GradientDrawable'
import MotionEvent from 'android.view.MotionEvent';
import {hexToRgb,getDefaultColor} from "../util/xCoreColorUtil.uts"
import {getUid, dp2px} from "../util/xCoreUtil.uts"
import xView from "./view.uts";
class xCardView extends xView {
override view:any;
bgLayer:xView;
contentView:any
wrap:RelativeLayout
contentParams:LinearLayout.LayoutParams
constructor(context : Context){
super(context);
let box = new LinearLayout(context);
box.setOrientation(LinearLayout.VERTICAL)
box.setLayoutParams(new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
(0).toInt(),
(0).toFloat()
))
let wrap = new RelativeLayout(context);
let content = new LinearLayout(context);
let RLay = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
wrap.setLayoutParams(RLay)
this.bgLayer = new xView(context);
content.setBackground(this.bgLayer.bgView);
content.setClipToOutline(true);
this.contentParams = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
content.setLayoutParams(this.contentParams)
content.setOrientation(LinearLayout.VERTICAL)
this.contentView = content;
this.wrap =wrap;
wrap.addView(this.bgLayer.getView())
wrap.addView(content as View)
box.addView(wrap as View)
this.view = box;
}
override getView():LinearLayout{
return this.view as LinearLayout;
}
override setBackgroundColor(colorStr : string) : xCardView {
this.bgLayer.setBackgroundColor(colorStr)
return this;
}
override setRadius(radius:any) : xCardView{
this.bgLayer.setRadius(radius)
return this;
}
override setBorder(w?:number,colorStr?:string,dashed?:boolean):xCardView{
this.bgLayer.setBorder(w,colorStr,dashed)
return this;
}
override setHeight(height : number) : xCardView {
console.error("不支持,请通过linerView设置,并将本CardView加入其中来设置高度。")
return this;
}
override setPadding(n:any):xCardView{
let view = this.contentView as ViewGroup;
if(Array.isArray(n)){
let rd = n as number[];
if(rd.length==0){
let rds = 0;
let rdf = dp2px(rds).toInt();
view.setPadding(rdf,rdf,rdf,rdf)
}else if(rd.length==1){
let rdf = dp2px(rd[0]).toInt();
view.setPadding(rdf,rdf,rdf,rdf)
}else if(rd.length==2){
view.setPadding(dp2px(rd[0]).toInt(),dp2px(rd[1]).toInt(),dp2px(rd[0]).toInt(),dp2px(rd[1]).toInt())
}else if(rd.length==3){
let rds = 0;
let rdf = rds.toInt();
view.setPadding(dp2px(rd[0]).toInt(),dp2px(rd[1]).toInt(),dp2px(rd[2]).toInt(),rdf)
}else if(rd.length==4){
view.setPadding(dp2px(rd[0]).toInt(),dp2px(rd[1]).toInt(),dp2px(rd[2]).toInt(),dp2px(rd[3]).toInt())
}
}else{
let rd = n as number;
let rdf = dp2px(rd).toInt();
view.setPadding(rdf,rdf,rdf,rdf)
}
return this;
}
override setDisabled(dis:boolean) : xCardView{
this.bgLayer.setDisabled(dis)
return this;
}
override setSwiper(fun?:(event: MotionEvent,detail?:UTSJSONObject)=>void) : xCardView{
if(typeof fun !== 'undefined'){
this.bgLayer.setSwiper(fun)
}
return this;
}
override setDoubleClick(fun?:(event: MotionEvent)=>void) : xCardView{
if(typeof fun !== 'undefined'){
this.bgLayer.setDoubleClick(fun)
}
return this;
}
override setClick(fun?:(event: MotionEvent)=>void) : xCardView{
if(typeof fun !== 'undefined'){
this.bgLayer.setClick(fun)
}
return this;
}
override setTouchStart(fun?:(event: MotionEvent)=>void) : xCardView{
if(typeof fun !== 'undefined'){
this.bgLayer.setTouchStart(fun)
}
return this;
}
override setTouchMove(fun?:(event: MotionEvent)=>void) : xCardView{
if(typeof fun !== 'undefined'){
this.bgLayer.setTouchMove(fun)
}
return this;
}
override setTouchEnd(fun?:(event: MotionEvent)=>void) : xCardView{
if(typeof fun !== 'undefined'){
this.bgLayer.setTouchEnd(fun)
}
return this;
}
override setTouchCancel(fun?:(event: MotionEvent)=>void) : xCardView{
if(typeof fun !== 'undefined'){
this.bgLayer.setTouchCancel(fun)
}
return this;
}
override setTouchLongPress(fun?:(event: MotionEvent)=>void) : xCardView{
if(typeof fun !== 'undefined'){
this.bgLayer.setTouchCancel(fun)
}
return this;
}
setAlign(cr:Int) : xCardView{
let view = this.contentView as LinearLayout;
view.setGravity(cr)
return this;
}
setLayoutParams(width?:number,height?:number,layouWidth?:number):xCardView{
let view = this.contentView as LinearLayout;
let w = (0).toInt();
let h = ViewGroup.LayoutParams.WRAP_CONTENT;
let flex = (1).toFloat();
if(typeof width =='number'){
let tw = width!;
w = tw.toInt();
}
if(typeof height =='number'){
let th = height!;
h = th.toInt();
}
if(typeof layouWidth =='number'&&layouWidth!=-1){
let tf = layouWidth!;
flex = tf.toFloat();
console.log('null',layouWidth)
let layoutParams_crd = new LinearLayout.LayoutParams(
w,
h,
flex
)
this.contentParams = layoutParams_crd
}else{
console.log('null')
let layoutParams_crd = new LinearLayout.LayoutParams(
w,
h
)
this.contentParams = layoutParams_crd
}
// 未知原因设置这个会闪退。
// view.setLayoutParams(layoutParams_crd);
return this;
}
append(children : View,...args: View[]):xCardView{
let view = this.contentView as ViewGroup;
view.addView(children)
args.forEach((el)=>view.addView(el))
return this;
}
appendChild(children : View):xCardView {
let view = this.contentView as ViewGroup;
view.addView(children)
return this;
}
}
export default xCardView;