AndroidAutoSize
AndroidAutoSize copied to clipboard
Activity#onCreate方法中添加HomeFragment,使用FragmentTransaction#commitNow()、FragmentTransaction#commitNowAllowingStateLoss()或者FragmentTransaction#commit() + fragmentManager.executePendingTransactions()这些方式添加Fragment时,第一个Fragment适配失败。
Environment
- [x] Autosize Version: 1.2.1
- [x] Target Android Version: Android 9.0, api28
- [x] Device Model: huawei mate 10 pro
- [x] Device Resolution: 1080px * 2160px
- [x] Design Size On AndroidManifest: 375dp * 667dp
Bug Description:
需求:Activity中存在多个,第一个Fragment想实现按照高度适配。
在Activity#onCreate方法中添加HomeFragment,使用commit方法添加Fragment时,适配没有问题;
但是使用FragmentTransaction#commitNow()、FragmentTransaction#commitNowAllowingStateLoss()或者FragmentTransaction#commit() + fragmentManager.executePendingTransactions()这些方式添加Fragment时,添加的第一个Fragment就不会按照高度适配,会跟随父Activity的适配走。
Log:
E/autosize: MainActivity#onCreate DisplayMetrics:
density: 3.12
densityDpi: 499
scaledDensity: 3.12
E/autosize: HomePageFragment#onCreate DisplayMetrics:
density: 3.12
densityDpi: 499
scaledDensity: 3.12
E/autosize: HomePageFragment#getSizeInDp
E/autosize: HomePageFragment#isBaseOnWidth
E/autosize: HomePageFragment#onCreateView DisplayMetrics:
density: 3.12
densityDpi: 499
scaledDensity: 3.12
E/autosize: HomePageFragment#onViewCreated DisplayMetrics:
density: 3.12
densityDpi: 499
scaledDensity: 3.12
Related Code:
HomePageFragment实现了 CustomAdapt接口,isBaseOnWidth返回false。
public class HomePageFragment extends Fragment implements CustomAdapt {
@Override
public boolean isBaseOnWidth() {
Log.e("autosize","HomePageFragment#isBaseOnWidth");
return false;
}
@Override
public float getSizeInDp() {
Log.e("autosize","HomePageFragment#getSizeInDp");
return 1334 / 2.0f;
}
}
MainActivity#onCreate中添加Fragment的方法:
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
// 1
transaction.add(R.id.fl_container, frag, fragmentTags[currentTabIndex]).show(frag).commitNow();
// 2
// transaction.add(R.id.fl_container, frag, fragmentTags[currentTabIndex]).show(frag).commitNowAllowingStateLoss();
// 3
// transaction.add(R.id.fl_container, frag).show(frag).commit();
// fragmentManager.executePendingTransactions();
Others:
https://github.com/JessYanCoding/AndroidAutoSize/blob/master/demo/src/main/java/me/jessyan/autosize/demo/CustomFragment1.java#L47