diff --git a/qmui/src/main/java/com/qmuiteam/qmui/widget/grouplist/QMUICommonListItemView.java b/qmui/src/main/java/com/qmuiteam/qmui/widget/grouplist/QMUICommonListItemView.java index 79c3f8ad..7742a5b9 100644 --- a/qmui/src/main/java/com/qmuiteam/qmui/widget/grouplist/QMUICommonListItemView.java +++ b/qmui/src/main/java/com/qmuiteam/qmui/widget/grouplist/QMUICommonListItemView.java @@ -24,7 +24,6 @@ import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.view.ViewStub; import android.widget.CheckBox; import android.widget.ImageView; import android.widget.TextView; @@ -32,11 +31,9 @@ import android.widget.TextView; import com.qmuiteam.qmui.R; import com.qmuiteam.qmui.layout.QMUIConstraintLayout; import com.qmuiteam.qmui.skin.QMUISkinHelper; -import com.qmuiteam.qmui.skin.QMUISkinManager; import com.qmuiteam.qmui.skin.QMUISkinValueBuilder; import com.qmuiteam.qmui.util.QMUILangHelper; import com.qmuiteam.qmui.util.QMUIResHelper; -import com.qmuiteam.qmui.util.QMUIViewHelper; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -136,8 +133,7 @@ public class QMUICommonListItemView extends QMUIConstraintLayout { protected TextView mDetailTextView; protected CheckBox mSwitch; private ImageView mRedDot; - private ViewStub mNewTipViewStub; - private View mNewTip; + private ImageView mNewTipView; private Placeholder mAfterTitleHolder; private Placeholder mBeforeAccessoryHolder; @@ -167,7 +163,7 @@ public class QMUICommonListItemView extends QMUIConstraintLayout { mImageView = findViewById(R.id.group_list_item_imageView); mTextView = findViewById(R.id.group_list_item_textView); mRedDot = findViewById(R.id.group_list_item_tips_dot); - mNewTipViewStub = findViewById(R.id.group_list_item_tips_new); + mNewTipView = findViewById(R.id.group_list_item_tips_new); mDetailTextView = findViewById(R.id.group_list_item_detailTextView); mAfterTitleHolder = findViewById(R.id.group_list_item_holder_after_title); mBeforeAccessoryHolder = findViewById(R.id.group_list_item_holder_before_accessory); @@ -208,12 +204,12 @@ public class QMUICommonListItemView extends QMUIConstraintLayout { mBeforeAccessoryHolder.setContentId(mRedDot.getId()); mAfterTitleHolder.setContentId(View.NO_ID); } - }else if(mNewTip != null && mNewTip.getVisibility() == View.VISIBLE){ + } else if (mNewTipView.getVisibility() == View.VISIBLE) { if (mTipPosition == TIP_POSITION_LEFT) { - mAfterTitleHolder.setContentId(mNewTip.getId()); + mAfterTitleHolder.setContentId(mNewTipView.getId()); mBeforeAccessoryHolder.setContentId(View.NO_ID); } else { - mBeforeAccessoryHolder.setContentId(mNewTip.getId()); + mBeforeAccessoryHolder.setContentId(mNewTipView.getId()); mAfterTitleHolder.setContentId(View.NO_ID); } } @@ -247,8 +243,8 @@ public class QMUICommonListItemView extends QMUIConstraintLayout { mBeforeAccessoryHolder.setContentId(mRedDot.getId()); mAfterTitleHolder.setContentId(View.NO_ID); } - if(isShow && mNewTip != null){ - mNewTip.setVisibility(View.GONE); + if (isShow) { + mNewTipView.setVisibility(View.GONE); checkDetailLeftMargin(); } } @@ -261,36 +257,30 @@ public class QMUICommonListItemView extends QMUIConstraintLayout { */ public void showNewTip(boolean isShow) { if (isShow) { - if (mNewTip == null) { - mNewTip = mNewTipViewStub.inflate(); - } - mNewTip.setId(QMUIViewHelper.generateViewId()); - mNewTip.setVisibility(View.VISIBLE); + mNewTipView.setVisibility(View.VISIBLE); mRedDot.setVisibility(GONE); if (mTipPosition == TIP_POSITION_LEFT) { - mAfterTitleHolder.setContentId(mNewTip.getId()); + mAfterTitleHolder.setContentId(mNewTipView.getId()); mBeforeAccessoryHolder.setContentId(View.NO_ID); } else { - mBeforeAccessoryHolder.setContentId(mNewTip.getId()); + mBeforeAccessoryHolder.setContentId(mNewTipView.getId()); mAfterTitleHolder.setContentId(View.NO_ID); } } else { - if (mNewTip != null && mNewTip.getVisibility() == View.VISIBLE) { - mNewTip.setVisibility(View.GONE); - } + mNewTipView.setVisibility(View.GONE); } checkDetailLeftMargin(); } - private void checkDetailLeftMargin(){ + private void checkDetailLeftMargin() { LayoutParams detailLp = (LayoutParams) mDetailTextView.getLayoutParams(); - if(mOrientation == VERTICAL){ + if (mOrientation == VERTICAL) { detailLp.leftMargin = 0; - }else{ - if(mNewTip == null || mNewTip.getVisibility() == View.GONE || mTipPosition == TIP_POSITION_LEFT){ + } else { + if (mNewTipView.getVisibility() == View.GONE || mTipPosition == TIP_POSITION_LEFT) { detailLp.leftMargin = QMUIResHelper.getAttrDimen( getContext(), R.attr.qmui_common_list_item_detail_h_margin_with_title); - }else{ + } else { detailLp.leftMargin = QMUIResHelper.getAttrDimen( getContext(), R.attr.qmui_common_list_item_detail_h_margin_with_title_large); } @@ -412,10 +402,10 @@ public class QMUICommonListItemView extends QMUIConstraintLayout { } LayoutParams titleLp = (LayoutParams) mTextView.getLayoutParams(); LayoutParams detailLp = (LayoutParams) mDetailTextView.getLayoutParams(); - if(mAccessoryView.getVisibility() != View.GONE){ + if (mAccessoryView.getVisibility() != View.GONE) { detailLp.goneRightMargin = detailLp.rightMargin; titleLp.goneRightMargin = titleLp.rightMargin; - }else{ + } else { detailLp.goneRightMargin = 0; titleLp.goneRightMargin = 0; } @@ -463,8 +453,54 @@ public class QMUICommonListItemView extends QMUIConstraintLayout { } } + public void setSkinConfig(SkinConfig skinConfig) { + QMUISkinValueBuilder builder = QMUISkinValueBuilder.acquire(); + if (skinConfig.iconTintColorRes != 0) { + builder.tintColor(skinConfig.iconTintColorRes); + } + if (skinConfig.iconSrcRes != 0) { + builder.src(skinConfig.iconSrcRes); + } + QMUISkinHelper.setSkinValue(mImageView, builder); + + builder.clear(); + if (skinConfig.titleTextColorRes != 0) { + builder.textColor(skinConfig.titleTextColorRes); + } + QMUISkinHelper.setSkinValue(mTextView, builder); + + builder.clear(); + if (skinConfig.detailTextColorRes != 0) { + builder.textColor(skinConfig.detailTextColorRes); + } + QMUISkinHelper.setSkinValue(mDetailTextView, builder); + + builder.clear(); + if (skinConfig.newTipSrcRes != 0) { + builder.src(skinConfig.newTipSrcRes); + } + QMUISkinHelper.setSkinValue(mNewTipView, builder); + + builder.clear(); + if (skinConfig.tipDotColorRes != 0) { + builder.bgTintColor(skinConfig.tipDotColorRes); + } + QMUISkinHelper.setSkinValue(mRedDot, builder); + builder.release(); + } + public interface LayoutParamConfig { ConstraintLayout.LayoutParams onConfig(ConstraintLayout.LayoutParams lp); } + + public static class SkinConfig { + + public int iconTintColorRes = R.attr.qmui_skin_support_common_list_icon_tint_color; + public int iconSrcRes = 0; + public int titleTextColorRes = R.attr.qmui_skin_support_common_list_title_color; + public int detailTextColorRes = R.attr.qmui_skin_support_common_list_detail_color; + public int newTipSrcRes = R.attr.qmui_skin_support_common_list_new_drawable; + public int tipDotColorRes = R.attr.qmui_skin_support_common_list_red_point_tint_color; + } } diff --git a/qmui/src/main/res/layout/qmui_common_list_item.xml b/qmui/src/main/res/layout/qmui_common_list_item.xml index 2cdc80bf..15a8ecfb 100644 --- a/qmui/src/main/res/layout/qmui_common_list_item.xml +++ b/qmui/src/main/res/layout/qmui_common_list_item.xml @@ -95,17 +95,6 @@ - - - - - + + - - \ No newline at end of file diff --git a/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/fragment/components/QDGroupListViewFragment.java b/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/fragment/components/QDGroupListViewFragment.java index c5ed2dba..d9ba67c5 100644 --- a/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/fragment/components/QDGroupListViewFragment.java +++ b/qmuidemo/src/main/java/com/qmuiteam/qmuidemo/fragment/components/QDGroupListViewFragment.java @@ -16,7 +16,6 @@ package com.qmuiteam.qmuidemo.fragment.components; -import androidx.core.content.ContextCompat; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -35,6 +34,7 @@ import com.qmuiteam.qmuidemo.lib.annotation.Widget; import com.qmuiteam.qmuidemo.manager.QDDataManager; import com.qmuiteam.qmuidemo.model.QDItemDescription; +import androidx.core.content.ContextCompat; import butterknife.BindView; import butterknife.ButterKnife; @@ -92,6 +92,11 @@ public class QDGroupListViewFragment extends BaseFragment { null, QMUICommonListItemView.HORIZONTAL, QMUICommonListItemView.ACCESSORY_TYPE_NONE); + + // 去除 icon 的 tintColor 换肤设置 + QMUICommonListItemView.SkinConfig skinConfig = new QMUICommonListItemView.SkinConfig(); + skinConfig.iconTintColorRes = 0; + itemWithDetail.setSkinConfig(skinConfig); itemWithDetail.setDetailText("在右方的详细信息"); QMUICommonListItemView itemWithDetailBelow = mGroupListView.createItemView("Item 3"); @@ -136,7 +141,6 @@ public class QDGroupListViewFragment extends BaseFragment { height); - QMUICommonListItemView itemWithCustom = mGroupListView.createItemView("右方自定义 View"); itemWithCustom.setAccessoryType(QMUICommonListItemView.ACCESSORY_TYPE_CUSTOM); QMUILoadingView loadingView = new QMUILoadingView(getActivity());