JessYanCoding / JessYanCoding/AndroidAutoSize

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

Aberta
#320 11 comentários 0 reações 0 responsáveis Ver no GitHub
Linguagem predominante
Java
Estrelas
13.7k
Forks
2k
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

# 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:

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.