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

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

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 для ширины и высоты. Спасибо.

1
M.KJ 3 Май 2019 в 12:16

3 ответа

Лучший ответ

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

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

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

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

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

2
JakeSteam 3 Май 2019 в 09:42

Измените 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>
3
kashyap 3 Май 2019 в 09:43

Я пойду с 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>
0
Venky 3 Май 2019 в 09:49