JessYanCoding / JessYanCoding/AndroidAutoSize

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

Offen
#320 11 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Java
Sterne
13.7k
Forks
2k
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

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

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.