From 2c1938a69d063720568875dab85a50c5885baf5f Mon Sep 17 00:00:00 2001 From: Jenly Date: Thu, 14 Jan 2021 17:48:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9ElabelTextWidth?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/custom_activity.xml | 1 + lib/src/main/java/com/king/zxing/ViewfinderView.java | 11 ++++++++++- lib/src/main/res/values/attrs.xml | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/layout/custom_activity.xml b/app/src/main/res/layout/custom_activity.xml index f624eba..771b958 100644 --- a/app/src/main/res/layout/custom_activity.xml +++ b/app/src/main/res/layout/custom_activity.xml @@ -13,6 +13,7 @@ android:id="@+id/viewfinderView" android:layout_width="match_parent" android:layout_height="match_parent" + app:labelTextWidth="180dp" app:labelText="@string/tips_scan_code" app:labelTextSize="@dimen/size_14sp" app:laserColor="@color/colorAccent" diff --git a/lib/src/main/java/com/king/zxing/ViewfinderView.java b/lib/src/main/java/com/king/zxing/ViewfinderView.java index 6cd2d07..e7192e8 100644 --- a/lib/src/main/java/com/king/zxing/ViewfinderView.java +++ b/lib/src/main/java/com/king/zxing/ViewfinderView.java @@ -95,6 +95,10 @@ public class ViewfinderView extends View { * 提示文本与扫码框的边距 */ private float labelTextPadding; + /** + * 提示文本的宽度 + */ + private int labelTextWidth; /** * 提示文本的位置 */ @@ -288,6 +292,7 @@ public class ViewfinderView extends View { labelTextColor = array.getColor(R.styleable.ViewfinderView_labelTextColor, ContextCompat.getColor(context,R.color.viewfinder_text_color)); labelTextSize = array.getDimension(R.styleable.ViewfinderView_labelTextSize, TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,14f,getResources().getDisplayMetrics())); labelTextPadding = array.getDimension(R.styleable.ViewfinderView_labelTextPadding,TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,24,getResources().getDisplayMetrics())); + labelTextWidth = array.getDimensionPixelSize(R.styleable.ViewfinderView_labelTextWidth,0); labelTextLocation = TextLocation.getFromInt(array.getInt(R.styleable.ViewfinderView_labelTextLocation,0)); // isShowResultPoint = array.getBoolean(R.styleable.ViewfinderView_showResultPoint,false); @@ -361,6 +366,10 @@ public class ViewfinderView extends View { frameHeight = size; } + if(labelTextWidth <= 0){ + labelTextWidth = width - getPaddingLeft() - getPaddingRight(); + } + float leftOffsets = (width - frameWidth) / 2 + framePaddingLeft - framePaddingRight; float topOffsets = (height - frameHeight) / 2 + framePaddingTop - framePaddingBottom; switch (frameGravity){ @@ -420,7 +429,7 @@ public class ViewfinderView extends View { textPaint.setColor(labelTextColor); textPaint.setTextSize(labelTextSize); textPaint.setTextAlign(Paint.Align.CENTER); - StaticLayout staticLayout = new StaticLayout(labelText,textPaint,canvas.getWidth(), Layout.Alignment.ALIGN_NORMAL,1.0f,0.0f,true); + StaticLayout staticLayout = new StaticLayout(labelText,textPaint,labelTextWidth, Layout.Alignment.ALIGN_NORMAL,1.2f,0.0f,true); if(labelTextLocation == TextLocation.BOTTOM){ canvas.translate(frame.left + frame.width() / 2,frame.bottom + labelTextPadding); }else{ diff --git a/lib/src/main/res/values/attrs.xml b/lib/src/main/res/values/attrs.xml index 7238699..51e8d3c 100644 --- a/lib/src/main/res/values/attrs.xml +++ b/lib/src/main/res/values/attrs.xml @@ -8,6 +8,7 @@ +