From e04bd0d2b82b51e396fa23ad45fd6cb401b30f60 Mon Sep 17 00:00:00 2001 From: cgspine Date: Wed, 17 Jun 2020 12:13:02 +0800 Subject: [PATCH] add some overload methods for QMUITopBar. --- .../com/qmuiteam/qmui/widget/QMUITopBar.java | 37 +++++++++++++------ .../qmui/widget/QMUITopBarLayout.java | 20 +++++++++- 2 files changed, 43 insertions(+), 14 deletions(-) diff --git a/qmui/src/main/java/com/qmuiteam/qmui/widget/QMUITopBar.java b/qmui/src/main/java/com/qmuiteam/qmui/widget/QMUITopBar.java index d65e474d..d7ed545d 100644 --- a/qmui/src/main/java/com/qmuiteam/qmui/widget/QMUITopBar.java +++ b/qmui/src/main/java/com/qmuiteam/qmui/widget/QMUITopBar.java @@ -36,6 +36,9 @@ import android.widget.Button; import android.widget.LinearLayout; import android.widget.RelativeLayout; +import androidx.annotation.Nullable; +import androidx.collection.SimpleArrayMap; + import com.qmuiteam.qmui.R; import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; import com.qmuiteam.qmui.layout.QMUIRelativeLayout; @@ -50,14 +53,11 @@ import com.qmuiteam.qmui.util.QMUILangHelper; import com.qmuiteam.qmui.util.QMUIResHelper; import com.qmuiteam.qmui.util.QMUIViewHelper; +import org.jetbrains.annotations.NotNull; + import java.util.ArrayList; import java.util.List; -import androidx.annotation.Nullable; -import androidx.collection.SimpleArrayMap; - -import org.jetbrains.annotations.NotNull; - /** * A standard toolbar for use within application content. *

@@ -479,12 +479,17 @@ public class QMUITopBar extends QMUIRelativeLayout implements IQMUISkinHandlerVi addView(view, layoutParams); } + public LayoutParams generateTopBarImageButtonLayoutParams(){ + return generateTopBarImageButtonLayoutParams(-1, -1); + } + /** * 生成一个 LayoutParams,当把 Button addView 到 TopBar 时,使用这个 LayouyParams */ - public LayoutParams generateTopBarImageButtonLayoutParams() { - LayoutParams lp = new LayoutParams(mTopBarImageBtnWidth, mTopBarImageBtnHeight); - lp.topMargin = Math.max(0, (getTopBarHeight() - mTopBarImageBtnHeight) / 2); + public LayoutParams generateTopBarImageButtonLayoutParams(int iconWidth, int iconHeight) { + iconHeight = iconHeight > 0 ? iconHeight : mTopBarImageBtnHeight; + LayoutParams lp = new LayoutParams(iconWidth > 0 ? iconWidth : mTopBarImageBtnWidth, iconHeight); + lp.topMargin = Math.max(0, (getTopBarHeight() - iconHeight) / 2); return lp; } @@ -493,6 +498,10 @@ public class QMUITopBar extends QMUIRelativeLayout implements IQMUISkinHandlerVi return addRightImageButton(drawableResId, true, viewId); } + public QMUIAlphaImageButton addRightImageButton(int drawableResId, boolean followTintColor, int viewId) { + return addRightImageButton(drawableResId, followTintColor, viewId, -1, -1); + } + /** * 根据 resourceId 生成一个 TopBar 的按钮,并 add 到 TopBar 的右侧 * @@ -501,9 +510,9 @@ public class QMUITopBar extends QMUIRelativeLayout implements IQMUISkinHandlerVi * @param followTintColor 换肤时使用 tintColor 更改它的颜色 * @return 返回生成的按钮 */ - public QMUIAlphaImageButton addRightImageButton(int drawableResId, boolean followTintColor, int viewId) { + public QMUIAlphaImageButton addRightImageButton(int drawableResId, boolean followTintColor, int viewId, int iconWidth, int iconHeight) { QMUIAlphaImageButton rightButton = generateTopBarImageButton(drawableResId, followTintColor); - this.addRightView(rightButton, viewId, generateTopBarImageButtonLayoutParams()); + this.addRightView(rightButton, viewId, generateTopBarImageButtonLayoutParams(iconWidth, iconHeight)); return rightButton; } @@ -511,6 +520,10 @@ public class QMUITopBar extends QMUIRelativeLayout implements IQMUISkinHandlerVi return addLeftImageButton(drawableResId, true, viewId); } + public QMUIAlphaImageButton addLeftImageButton(int drawableResId, boolean followTintColor, int viewId) { + return addLeftImageButton(drawableResId, followTintColor, viewId, -1, -1); + } + /** * 根据 resourceId 生成一个 TopBar 的按钮,并 add 到 TopBar 的左边 * @@ -519,9 +532,9 @@ public class QMUITopBar extends QMUIRelativeLayout implements IQMUISkinHandlerVi * @param followTintColor 换肤时使用 tintColor 更改它的颜色 * @return 返回生成的按钮 */ - public QMUIAlphaImageButton addLeftImageButton(int drawableResId, boolean followTintColor, int viewId) { + public QMUIAlphaImageButton addLeftImageButton(int drawableResId, boolean followTintColor, int viewId, int iconWidth, int iconHeight) { QMUIAlphaImageButton leftButton = generateTopBarImageButton(drawableResId, followTintColor); - this.addLeftView(leftButton, viewId, generateTopBarImageButtonLayoutParams()); + this.addLeftView(leftButton, viewId, generateTopBarImageButtonLayoutParams(iconWidth, iconHeight)); return leftButton; } diff --git a/qmui/src/main/java/com/qmuiteam/qmui/widget/QMUITopBarLayout.java b/qmui/src/main/java/com/qmuiteam/qmui/widget/QMUITopBarLayout.java index 1ba0dec6..3dd9fe0c 100644 --- a/qmui/src/main/java/com/qmuiteam/qmui/widget/QMUITopBarLayout.java +++ b/qmui/src/main/java/com/qmuiteam/qmui/widget/QMUITopBarLayout.java @@ -24,6 +24,8 @@ import android.widget.Button; import android.widget.FrameLayout; import android.widget.RelativeLayout; +import androidx.collection.SimpleArrayMap; + import com.qmuiteam.qmui.R; import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; import com.qmuiteam.qmui.layout.QMUIFrameLayout; @@ -31,8 +33,6 @@ import com.qmuiteam.qmui.qqface.QMUIQQFaceView; import com.qmuiteam.qmui.skin.QMUISkinValueBuilder; import com.qmuiteam.qmui.skin.defaultAttr.IQMUISkinDefaultAttrProvider; -import androidx.collection.SimpleArrayMap; - /** * 这是一个对 {@link QMUITopBar} 的代理类,需要它的原因是: * 我们用 fitSystemWindows 实现沉浸式状态栏后,需要将 {@link QMUITopBar} 的背景衍生到状态栏后面,这个时候 fitSystemWindows 是通过 @@ -122,10 +122,26 @@ public class QMUITopBarLayout extends QMUIFrameLayout implements IQMUISkinDefaul return mTopBar.addRightImageButton(drawableResId, viewId); } + public QMUIAlphaImageButton addRightImageButton(int drawableResId, boolean followTintColor, int viewId) { + return mTopBar.addRightImageButton(drawableResId, followTintColor, viewId); + } + + public QMUIAlphaImageButton addRightImageButton(int drawableResId, boolean followTintColor, int viewId, int iconWidth, int iconHeight) { + return mTopBar.addRightImageButton(drawableResId, followTintColor, viewId, iconWidth, iconHeight); + } + public QMUIAlphaImageButton addLeftImageButton(int drawableResId, int viewId) { return mTopBar.addLeftImageButton(drawableResId, viewId); } + public QMUIAlphaImageButton addLeftImageButton(int drawableResId, boolean followTintColor, int viewId) { + return mTopBar.addLeftImageButton(drawableResId, followTintColor, viewId); + } + + public QMUIAlphaImageButton addLeftImageButton(int drawableResId, boolean followTintColor, int viewId, int iconWidth, int iconHeight) { + return mTopBar.addLeftImageButton(drawableResId, followTintColor, viewId, iconWidth, iconHeight); + } + public Button addLeftTextButton(int stringResId, int viewId) { return mTopBar.addLeftTextButton(stringResId, viewId); }