查看高度错误地测量Android 5+

时间:2015-03-20 15:53:43

标签: android android-viewpager expandablelistview pagerslidingtabstrip residemenu

我创建了一个由驻留菜单(https://github.com/SpecialCyCi/AndroidResideMenu)显示的片段作为某个菜单项的内容。问题是,在 Android 5 + ExpandableListView(绿色框架)的高度未正确测量时,它会切断下方系统导航按钮的底部条带(大约高度)。看起来滚动框架在这些按钮下面,我无法滚动显示此部分。

Incorrectly measured ExpandableListView

现在。经过多次尝试,我得到了几乎正确测量的视图。 我已经在我的片段的onCreateView中添加了:

if(Build.VERSION.SDK_INT >= 21) {
    view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
}

ExpandableListView不在系统按钮下,但我在视图顶部有空白。不幸的是,即使我切换菜单项,这个空白区也会停留在那里。

任何人都可以分享可能出错的想法吗?

Blank space on the top

2 个答案:

答案 0 :(得分:0)

  

我也遇到过这个问题。 (Android ResideMenu library, bottom of Fragment has Cropping issue)   正如你所说的查看身高   在Lollipop设备上测量不正确。我找到了部分解决方案   它。虽然我试图为原生导航提供透明度   吧,我在我的values-v21中设置 android:windowTranslucentNavigation 为true   夹。然后查看高度开始正确计算,但颜色   导航栏已更改。

<resources>
        <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
            <!-- Customize your theme here. -->
            <item name="android:actionBarStyle">@style/Widget.AppCompat.ActionBar</item>

     <item name="android:windowTranslucentNavigation">true</item>

        </style>
</resources>

答案 1 :(得分:0)

大约一周的工作后,我找到了完美的解决方案。

  

主要活动

protected void onCreate(Bundle savedInstanceState)

{
etWindow().getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
mToolbar = (Toolbar) findViewById(R.id.toolbar);

((LinearLayout.LayoutParams)

mToolbar.getLayoutParams()).setMargins(0, getStatusBarHeight(this), 0, 0);

}

public static int getStatusBarHeight(Context context) {
    int result = 0;
    int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
    if (resourceId > 0) {
        result = context.getResources().getDimensionPixelSize(resourceId);
    }
    return result;
}
  

AndroidManifest活动添加此行

<activity
            android:name=".activity.Main"
            android:configChanges="orientation|screenSize"
             android:windowSoftInputMode="adjustPan"
             android:fitsSystemWindows="true"
               android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
  

styleV21

<style name="myTheme" parent="FridayfairTheme.Base">
      <item name="android:windowTranslucentNavigation">true</item>
</style>