Относительная компоновка не покрывает ширину экрана - PullRequest
1 голос
/ 03 мая 2019

Я создаю приложение, которое использует относительную компоновку для создания прозрачного черного действия на экране, но создаваемая компоновка не соответствует ширине экрана моего телефона.

Вот результат моего кодирования

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 ]

2 голосов
/ 03 мая 2019

Измените 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 голосов
/ 03 мая 2019

Вам нужно установить это в вашем styles.xml для вашего Theme.Transparent:

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

Плавающее окно, как правило, является диалоговым окном, поэтому с обеих сторон имеется автоматический интервал. Установка этого в false удаляет этот автоматический интервал. Вы можете прочитать немного больше об этом в соответствующей документации , а именно:

... отображается ли это окно в плавающем стиле (на основе атрибута R.attr.windowIsFloating в стиле / теме).

Хотя, если вы делаете полноэкранный режим RelativeLayout, возникает вопрос, зачем вам нужна прозрачность? ..

0 голосов
/ 03 мая 2019

Я пойду с 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>
...