我有一个浮动活动覆盖在用户屏幕上:这个叠加始终居中,我无法理解为什么。
在我的XML中,我有:
<style name="PopupTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowSoftInputMode">adjustResize</item> <item name="windowActionModeOverlay">true</item> <item name="android:windowIsTranslucent">true</item> <item name="windowNoTitle">true</item> <item name="android:windowCloseOnTouchOutside">true</item> <item name="android:colorBackgroundCacheHint">@null</item> <item name="android:backgroundDimEnabled">true</item> <item name="colorAccent">@color/colorPrimary</item> <item name="android:gravity">bottom</item> <item name="android:adjustViewBounds">true</item> </style>
正如您所看到的,Gravity对样式没有影响:我也尝试了对齐标记,但也没有用。
接下来我们有了onCreate方法,虽然不需要,但我添加了requestWindowFeature(),只需要声明它来获取编辑默认设置的权限:
@Override protected void onCreate(Bundle savedInstanceState) { WindowManager.LayoutParams params = new WindowManager.LayoutParams(); params.y = 80; getWindow().setAttributes(params); requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }
最后(好吧它实际上是第一个)我有覆盖方法:
@Override public void onAttachedToWindow() { DisplayMetrics displayMetrics = new DisplayMetrics(); WindowManager wm = (WindowManager) getApplicationContext().getSystemService(this.WINDOW_SERVICE); // the results will be higher than using the activity context object or the getWindowManager() shortcut wm.getDefaultDisplay().getMetrics(displayMetrics); int screenWidth = displayMetrics.widthPixels; int screenHeight = displayMetrics.heightPixels; WindowManager.LayoutParams params = getWindow().getAttributes(); params.y = 80; this.getWindow().setAttributes(params); this.getWindow().setLayout(screenWidth, screenHeight /2); }
(顺便说一句,setLayout工作正常,并且完全调整了屏幕:这只是增加了混乱)params.y = 80;其中80表示y与底部对齐。
所有这些浮动活动只需要坐在设备底部并占据屏幕的一半空间即可。然而,它坚持不断集中。
一切顺利, 安东尼
答案 0 :(得分:0)
对于那些来这里遇到同样问题的人:覆盖方法中的params.y = 80。它需要是8388611 - 虽然这没有意义,因为它是params.x的值:无论哪种方式,只要确保你在之后执行setAttributes!