JessYanCoding / JessYanCoding/AndroidAutoSize

横屏以高基准下,dialog高度异常

Đang mở
#320 11 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Java
Star
13.7k
Fork
2k
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

# Environment
- [x] Autosize Version: 1.2.0
- [x] Target Android Version: 任意
- [x] Device Model: 任意
- [x] Device Resolution: 任意
- [x] Design Size On AndroidManifest: 1335*768

### Bug Description:
我们应用是横屏运行,在activity设置AutoSize适配以高768为基准,显示一个dialog,
**dialog高度一旦超出某个数值,其余内容将被裁剪掉,无法显示**,
需要手动对dialog的window进行写死设置,但这个方法对一些需要根据内容自动适配高度的dialog来说有很大问题。
我在某一个回答下看到一个类似问题的方案,用来替换dialog的context:
```java
public class AutoSizeContextWrapper extends android.content.ContextWrapper {
private Resources mResources;

public AutoSizeContextWrapper(Context base) {
super(base);
//这里调用 AutoSizeCompat.autoConvertDensity()也会出现UI放大
cancelAdapt();
}

private synchronized void cancelAdapt() {
Resources oldResources = super.getResources();
mResources = new Resources(oldResources.getAssets(), oldResources.getDisplayMetrics(), oldResources.getConfiguration());
AutoSizeCompat.cancelAdapt(mResources);

//下面这种使用拷贝修改的cancelAdapt()避免全局Resource适配取消,这种方法也会出现UI放大
/*DisplayMetrics oldDisplayMetrics = oldResources.getDisplayMetrics();
DisplayMetrics displayMetrics = new DisplayMetrics();
displayMetrics.density = oldDisplayMetrics.density;
displayMetrics.densityDpi = oldDisplayMetrics.densityDpi;
displayMetrics.heightPixels = oldDisplayMetrics.heightPixels;
displayMetrics.scaledDensity = oldDisplayMetrics.scaledDensity;
displayMetrics.widthPixels = oldDisplayMetrics.widthPixels;
displayMetrics.xdpi = oldDisplayMetrics.xdpi;
displayMetrics.ydpi = oldDisplayMetrics.ydpi;

Configuration configuration = new Configuration(oldResources.getConfiguration());
mResources = new Resources(oldResources.getAssets(),displayMetrics , configuration);
cancelAdapt(mResources);*/
}

@Override
public Resources getResources() {
return mResources;
}
}
```
使用这个方案之后dialog能够正常显示完全和自动适配高度了,dialog内的UI也没有真的失去适配,
不过后来发现在**华为android10**下出现切换到其他app之后再返回打开dialog,dialog尺寸会真的失去适配,尺寸放大了很多。
(复现路径->打开app到稳定页面,切后台->回前台->切后台->回前台->打开dialog,固定在第二次切后台回来后失去适配)

**请问除了这个方案之外还有其他解决方法吗?**

### Screenshot
![Screenshot_2020-10-12-14-26-53-684_com klzz vipthink offline](https://user-images.githubusercontent.com/27761905/95714720-372b9780-0c9b-11eb-8f32-38877a29a0ae.jpg)

### Related Code:
弹窗布局代码:
```java

```

### Others:

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.