相对布局不覆盖屏幕的宽度

时间:2019-05-03 09:16:10

标签: java android layout relativelayout

我正在制作一个使用相对布局在屏幕上创建透明黑色活动的应用程序,但是它创建的布局与我的手机屏幕的宽度不匹配。

这是我编码的结果

Screenshot https://ibb.co/w44WcWV

这是我的xml文件。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#A6000000"
        >

    </RelativeLayout>
</RelativeLayout>

这是我用来创建透明活动的styles.xml

<style name="Theme.Transparent" parent = "android:Theme">
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsFloating">false</item>
        <item name="android:backgroundDimEnabled">false</item>
    </style>

我已经为宽度和高度都设置了match_parent。谢谢。

3 个答案:

答案 0 :(得分:2)

您需要在styles.xml中为Theme.Transparent进行设置:

<item name="android:windowIsFloating">false</item>

浮动窗口通常是一个对话框,因此在每一侧都有自动间隔。将此设置为false会删除此自动间距。您可以详细了解in the related documentation,尤其是:

  

...此窗口是否以浮动样式显示(基于样式/主题中的R.attr.windowIsFloating属性)。

尽管,如果您要进行全屏RelativeLayout的使用,人们会想知道为什么您最终需要透明....

答案 1 :(得分:2)

以此更改style.xml。

 <style name="Theme.AppCompat.Translucent" parent="Theme.AppCompat.NoActionBar">
        <item name="android:background">#33000000</item> 
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:colorBackgroundCacheHint">@null</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowAnimationStyle">@android:style/Animation</item>
    </style>

在清单中

<activity
        android:theme="@style/Theme.AppCompat.Translucent"
        android:name=".MainActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

答案 2 :(得分:0)

我将使用Constraintlayout来实现单父多视图

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <View
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#A6000000"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent">

    </View>
</androidx.constraintlayout.widget.ConstraintLayout>