mirror of
https://github.com/Tencent/QMUI_Android.git
synced 2026-10-17 04:31:16 +08:00
bugfix: BottomSheet Context
This commit is contained in:
@@ -52,6 +52,13 @@ public class QMUISkinLayoutInflaterFactory implements LayoutInflater.Factory2 {
|
||||
mOriginLayoutInflater = originLayoutInflater;
|
||||
}
|
||||
|
||||
public QMUISkinLayoutInflaterFactory cloneForLayoutInflaterIfNeeded(LayoutInflater layoutInflater){
|
||||
if(mOriginLayoutInflater.getContext() == layoutInflater.getContext()){
|
||||
return this;
|
||||
}
|
||||
return new QMUISkinLayoutInflaterFactory(mActivityWeakReference.get(), layoutInflater);
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(View parent, String name, Context context, AttributeSet attrs) {
|
||||
Activity activity = mActivityWeakReference.get();
|
||||
@@ -64,7 +71,7 @@ public class QMUISkinLayoutInflaterFactory implements LayoutInflater.Factory2 {
|
||||
try{
|
||||
if (!name.contains(".")) {
|
||||
if(sSuccessClassNamePrefixMap.containsKey(name)){
|
||||
view = LayoutInflater.from(context)
|
||||
view = mOriginLayoutInflater
|
||||
.createView(name, sSuccessClassNamePrefixMap.get(name), attrs);
|
||||
}else{
|
||||
for (String prefix : sClassPrefixList) {
|
||||
@@ -76,7 +83,7 @@ public class QMUISkinLayoutInflaterFactory implements LayoutInflater.Factory2 {
|
||||
}
|
||||
}
|
||||
}else{
|
||||
view = mOriginLayoutInflater.createView(name, null, attrs);
|
||||
view = mOriginLayoutInflater.cloneInContext(context).createView(name, null, attrs);
|
||||
}
|
||||
}catch (ClassNotFoundException ignore){
|
||||
|
||||
|
||||
@@ -18,13 +18,16 @@ package com.qmuiteam.qmui.widget.dialog;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.TypedArray;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Window;
|
||||
|
||||
import com.qmuiteam.qmui.skin.QMUISkinLayoutInflaterFactory;
|
||||
import com.qmuiteam.qmui.skin.QMUISkinManager;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatDialog;
|
||||
import androidx.core.view.LayoutInflaterCompat;
|
||||
|
||||
public class QMUIBaseDialog extends AppCompatDialog {
|
||||
boolean cancelable = true;
|
||||
@@ -55,6 +58,18 @@ public class QMUIBaseDialog extends AppCompatDialog {
|
||||
}
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public LayoutInflater getLayoutInflater() {
|
||||
LayoutInflater layoutInflater = super.getLayoutInflater();
|
||||
LayoutInflater.Factory2 factory2 = layoutInflater.getFactory2();
|
||||
if(factory2 instanceof QMUISkinLayoutInflaterFactory){
|
||||
LayoutInflaterCompat.setFactory2(layoutInflater,
|
||||
((QMUISkinLayoutInflaterFactory)factory2).cloneForLayoutInflaterIfNeeded(layoutInflater));
|
||||
}
|
||||
return layoutInflater;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
super.onStop();
|
||||
|
||||
@@ -22,6 +22,7 @@ import android.graphics.Typeface;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.text.Layout;
|
||||
import android.util.Pair;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
@@ -34,6 +35,7 @@ import android.widget.LinearLayout;
|
||||
import com.google.android.material.bottomsheet.BottomSheetBehavior;
|
||||
import com.qmuiteam.qmui.R;
|
||||
import com.qmuiteam.qmui.layout.QMUIPriorityLinearLayout;
|
||||
import com.qmuiteam.qmui.skin.QMUISkinLayoutInflaterFactory;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
@@ -44,6 +46,7 @@ import androidx.annotation.IntDef;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.coordinatorlayout.widget.CoordinatorLayout;
|
||||
import androidx.core.view.LayoutInflaterCompat;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
@@ -75,7 +78,7 @@ public class QMUIBottomSheet extends QMUIBaseDialog {
|
||||
|
||||
public QMUIBottomSheet(Context context, int style) {
|
||||
super(context, style);
|
||||
ViewGroup container = (ViewGroup) View.inflate(context, R.layout.qmui_bottom_sheet_dialog, null);
|
||||
ViewGroup container = (ViewGroup) getLayoutInflater().inflate(R.layout.qmui_bottom_sheet_dialog, null);
|
||||
mRootView = container.findViewById(R.id.bottom_sheet);
|
||||
mBehavior = new QMUIBottomSheetBehavior<>();
|
||||
mBehavior.setHideable(cancelable);
|
||||
|
||||
@@ -174,7 +174,7 @@ public class QMUITipDialog extends QMUIBaseDialog {
|
||||
} else if (mCurrentIconType == ICON_TYPE_SUCCESS ||
|
||||
mCurrentIconType == ICON_TYPE_FAIL ||
|
||||
mCurrentIconType == ICON_TYPE_INFO) {
|
||||
ImageView imageView = new AppCompatImageView(mContext);
|
||||
ImageView imageView = new AppCompatImageView(dialogContext);
|
||||
|
||||
builder.clear();
|
||||
Drawable drawable;
|
||||
@@ -198,7 +198,7 @@ public class QMUITipDialog extends QMUIBaseDialog {
|
||||
}
|
||||
|
||||
if (mTipWord != null && mTipWord.length() > 0) {
|
||||
TextView tipView = new QMUISpanTouchFixTextView(mContext);
|
||||
TextView tipView = new QMUISpanTouchFixTextView(dialogContext);
|
||||
tipView.setEllipsize(TextUtils.TruncateAt.END);
|
||||
tipView.setGravity(Gravity.CENTER);
|
||||
tipView.setTextSize(TypedValue.COMPLEX_UNIT_PX,
|
||||
@@ -222,6 +222,8 @@ public class QMUITipDialog extends QMUIBaseDialog {
|
||||
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||
}
|
||||
|
||||
|
||||
|
||||
protected LinearLayout.LayoutParams onCreateTextLayoutParams(Context context, @IconType int iconType) {
|
||||
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
|
||||
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||
|
||||
+2
@@ -19,6 +19,7 @@ package com.qmuiteam.qmuidemo.fragment.components;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
|
||||
import com.qmuiteam.qmui.skin.QMUISkinManager;
|
||||
import com.qmuiteam.qmui.widget.QMUIEmptyView;
|
||||
import com.qmuiteam.qmui.widget.QMUITopBarLayout;
|
||||
import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet;
|
||||
@@ -78,6 +79,7 @@ public class QDEmptyViewFragment extends BaseFragment {
|
||||
|
||||
private void showBottomSheetList() {
|
||||
new QMUIBottomSheet.BottomListSheetBuilder(getActivity())
|
||||
.setSkinManager(QMUISkinManager.defaultInstance(getContext()))
|
||||
.addItem(getResources().getString(R.string.emptyView_mode_title_double_text))
|
||||
.addItem(getResources().getString(R.string.emptyView_mode_title_single_text))
|
||||
.addItem(getResources().getString(R.string.emptyView_mode_title_loading))
|
||||
|
||||
Reference in New Issue
Block a user