android应用程序-如何将对象定位到屏幕的顶部和底部?

s4n0splo  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(422)

我正在尝试创建一个简单的android应用程序,在屏幕的顶部和底部显示一个黑条,因为我不喜欢现在所有手机都有的圆屏幕角的新趋势,而且目前似乎没有任何解决这个问题的方法不需要一个根手机。我正在尝试隐藏圆角,以创建一个更传统、更美观的矩形显示外观,使用系统覆盖来绘制所有其他应用程序。这是我当前用于覆盖的代码,基于此https://gist.github.com/bjoernq/6975256

wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);

    overlayedButton1 = new Button(this);
    overlayedButton1.setBackgroundColor(-16777216);

    overlayedButton2 = new Button(this);
    overlayedButton2.setBackgroundColor(-16777216);

    WindowManager.LayoutParams params1 = new WindowManager.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, PixelFormat.TRANSLUCENT);
    params1.gravity = Gravity.LEFT | Gravity.TOP;
    params1.x = 0;
    params1.y = 0;
    params1.width = 1080;
    params1.height = 100;
    wm.addView(overlayedButton1, params1);

    WindowManager.LayoutParams params2 = new WindowManager.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, PixelFormat.TRANSLUCENT);
    params2.gravity = Gravity.LEFT | Gravity.BOTTOM;
    params2.x = 0;
    params2.y = 0;
    params2.width = 1080;
    params2.height = 100;
    wm.addView(overlayedButton2, params2);

结果是在状态栏下方和导航栏上方出现一个黑色条,如图所示
https://i.stack.imgur.com/cbuyd.jpg
我是android开发的新手,所以不知道如何将这些条定位到屏幕的绝对顶部和底部?
另一个问题是,当打开以横向模式运行的应用程序时,我的覆盖应用程序的黑色条也会旋转,因此它们位于屏幕的两侧。
我补充说android:screenorientation=“肖像”的清单文件,但这没有区别。
我怎样才能使黑条停留在屏幕的顶部和底部边缘,而不考虑应用程序的旋转?

2g32fytz

2g32fytz1#

我认为您可以尝试重新设计activity.xml,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:gravity="center"
    android:background="@android:color/background_dark"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="500dp"
        android:background="@android:color/holo_blue_dark">

        <TextView
            android:id="@+id/textView2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="HELLO WORLD"
            android:textAlignment="center"
            android:textColor="#000000"
            android:textSize="28sp"
            android:textStyle="bold" />
    </LinearLayout>

</LinearLayout>

相关问题