add some overload methods for QMUITopBar.

This commit is contained in:
cgspine
2020-06-17 12:13:02 +08:00
parent 466c1894ce
commit e04bd0d2b8
2 changed files with 43 additions and 14 deletions
@@ -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.
* <p>
@@ -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;
}
@@ -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);
}