Перейти к содержанию
Fire Monkey от А до Я
  • 0

Android. Форма не на весь экран по вертикали.


Hangar-18

Вопрос

Добрый день всем. Прошу помощи.

При компиляции приложения и запуске на физическом устройстве  Xiaomi Redmi 5 Plus ( Android  7.1.2, разрешение 2160х1080) форма не растягивается на весь экран. Вверху остается полоса. На скриншоте ее видно над красным элементом. (рис.1). То есть форма как бы "сжимается" сверху с охранением пропорций.

При этом при повороте в горизонтальное положение все становится на свои места (рис.2), но при возврате в вертикальное положение полоса снова появляется.

Изменение Project->Options->Version Info -- Target: All cofigurations - Android platform -- theme = NoTitleBar (TitleBar) ничего не дает и полоса остается.

При запуске на Huawei 8950-1 ( Android 4.0.4, разрешение 960 x 540) так же все на своих местах (рис.3).

Помогите советом.

 

 

Рис1.png

Рис2.png

Рис3.jpg

Изменено пользователем Hangar-18
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

У меня была похожая ситуация с Redmi 5 и Redmi Note 5

Попробуйте зайти на телефоне в Настройки - > Безграничный экран - > Полноэкранный режим, и активировать полноэкранный режим для этого приложения

Ссылка на комментарий
  • 0
12 минут назад, Alex7wrt сказал:

У меня была похожая ситуация с Redmi 5 и Redmi Note 5

Попробуйте зайти на телефоне в Настройки - > Безграничный экран - > Полноэкранный режим, и активировать полноэкранный режим для этого приложения

Да! Этот метод работает! Спасибо. Но можно от этого как-нибудь уйти? От чего это возникает?

Ссылка на комментарий
  • 1
2 минуты назад, Hangar-18 сказал:

Да! Этот метод работает! Спасибо. Но можно от этого как-нибудь уйти? От чего это возникает?

Для того, чтобы работало "из коробки", добавьте в файле манифеста в секции Activity строку:
   <meta-data android:name="android.max_aspect" android:value="2.1" />

Где 2.1 -максимальное соотношение сторон, поддерживаемое приложением. Можно заменить другим числом

Ссылка на комментарий
  • 0
1 минуту назад, Alex7wrt сказал:

Для того, чтобы работало "из коробки", добавьте в файле манифеста в секции Activity строку:
   <meta-data android:name="android.max_aspect" android:value="2.1" />

Где 2.1 -максимальное соотношение сторон, поддерживаемое приложением. Можно заменить другим числом

Спасибо! Попробую. Отпишу результат. 

Я предполагал, что это от соотношения 2:1. Только не знал "куда копать".

Ссылка на комментарий
  • 0
1 час назад, Alex7wrt сказал:

Для того, чтобы работало "из коробки", добавьте в файле манифеста в секции Activity строку:
   <meta-data android:name="android.max_aspect" android:value="2.1" />

Где 2.1 -максимальное соотношение сторон, поддерживаемое приложением. Можно заменить другим числом

Сначала нужно скомпилировать под Андроид, потом добавить в файл манифеста, который появится в папке с проектом, а потом еще раз скомпилировать? Или как? Я начинаю только на этой стезе.

Файл, я так понимаю, AndroidManifest.template.xml в корне папки с проектом?

 

Изменено пользователем Hangar-18
Ссылка на комментарий
  • 0
9 минут назад, Alex7wrt сказал:

Да, все верно. 

Безрезультатно. Или не туда прописал?

Добавил в AndroidManifest.template.xml, который расположен по пути C:\Users\vlad\Documents\Embarcadero\Studio\Projects\FPlayer

<?xml version="1.0" encoding="utf-8"?>
<!-- BEGIN_INCLUDE(manifest) -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="%package%"
        android:versionCode="%versionCode%"
        android:versionName="%versionName%"
        android:installLocation="%installLocation%">

    <!-- This is the platform API where NativeActivity was introduced. -->
    <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" />
<%uses-permission%>
    <uses-feature android:glEsVersion="0x00020000" android:required="True"/>
    <application android:persistent="%persistent%" 
        android:restoreAnyVersion="%restoreAnyVersion%" 
        android:label="%label%" 
        android:debuggable="%debuggable%" 
        android:largeHeap="%largeHeap%"
        android:icon="%icon%"
        android:theme="%theme%"
        android:hardwareAccelerated="%hardwareAccelerated%">

<%application-meta-data%>
        <%services%>
        <!-- Our activity is a subclass of the built-in NativeActivity framework class.
             This will take care of integrating with our NDK code. -->
        <activity android:name="com.embarcadero.firemonkey.FMXNativeActivity"
                android:label="%activityLabel%"
                android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
                android:launchMode="singleTask">
            <!-- Tell NativeActivity the name of our .so -->
            <meta-data android:name="android.app.lib_name"
                android:value="%libNameValue%" />
            <meta-data android:name="android.max_aspect" android:value="2.1" />
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter> 
        </activity>
        <%activity%>
        <%receivers%>
    </application>
</manifest>
<!-- END_INCLUDE(manifest) -->

после повторной компиляции эта строка появилясь в двух файлах AndroidManifest.xml по адресам

C:\Users\vlad\Documents\Embarcadero\Studio\Projects\FPlayer\Android\Debug\AndroidManifest.xml

C:\Users\vlad\Documents\Embarcadero\Studio\Projects\FPlayer\Android\Debug\FPlayer\AndroidManifest.xml

в таком виде:

<?xml version="1.0" encoding="UTF-8"?>

<!-- BEGIN_INCLUDE(manifest) -->

-<manifest android:installLocation="auto" android:versionName="1.0.1" android:versionCode="1" package="com.embarcadero.FPlayer" xmlns:android="http://schemas.android.com/apk/res/android">

<!-- END_INCLUDE(manifest) -->

<!-- This is the platform API where NativeActivity was introduced. -->


<uses-sdk android:targetSdkVersion="14" android:minSdkVersion="14"/>

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

<uses-permission android:name="android.permission.CALL_PHONE"/>

<uses-permission android:name="android.permission.CAMERA"/>

<uses-permission android:name="android.permission.INTERNET"/>

<uses-permission android:name="android.permission.READ_CALENDAR"/>

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

<uses-permission android:name="android.permission.WRITE_CALENDAR"/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<uses-feature android:required="True" android:glEsVersion="0x00020000"/>


-<application android:hardwareAccelerated="true" android:theme="@style/AppTheme" android:icon="@drawable/ic_launcher" android:largeHeap="False" android:debuggable="True" android:label="FPlayer" android:restoreAnyVersion="False" android:persistent="False">

<!-- Our activity is a subclass of the built-in NativeActivity framework class. This will take care of integrating with our NDK code. -->

-<activity android:name="com.embarcadero.firemonkey.FMXNativeActivity" android:label="FPlayer" android:launchMode="singleTask" android:configChanges="orientation|keyboard|keyboardHidden|screenSize">

<!-- Tell NativeActivity the name of our .so -->


<meta-data android:name="android.app.lib_name" android:value="FPlayer"/>

<meta-data android:name="android.max_aspect" android:value="2.1"/>


-<intent-filter>

<action android:name="android.intent.action.MAIN"/>

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

</intent-filter>

</activity>

<receiver android:name="com.embarcadero.rtl.notifications.NotificationAlarm"/>

</application>

</manifest>

 

Ссылка на комментарий
  • 0
2 минуты назад, Alex7wrt сказал:

Хм...

Создал пустой проект, добавил эту строку - приложение на весь экран,убрал строку - чёрная полоса снизу.

Пока не пойму,почему у вас не получается

Вставлена она у меня нужном месте?

Ссылка на комментарий
  • 0

Да. Вот мой манифест:

<?xml version="1.0" encoding="utf-8"?>
<!-- BEGIN_INCLUDE(manifest) -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="%package%"
        android:versionCode="%versionCode%"
        android:versionName="%versionName%"
        android:installLocation="%installLocation%">

    <!-- This is the platform API where NativeActivity was introduced. -->
    <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" />
<%uses-permission%>
    <uses-feature android:glEsVersion="0x00020000" android:required="True"/>
    <application android:persistent="%persistent%" 
        android:restoreAnyVersion="%restoreAnyVersion%" 
        android:label="%label%" 
        android:debuggable="%debuggable%" 
        android:largeHeap="%largeHeap%"
        android:icon="%icon%"
        android:theme="%theme%"
        android:hardwareAccelerated="%hardwareAccelerated%">

<%application-meta-data%>
		<%services%>
        <!-- Our activity is a subclass of the built-in NativeActivity framework class.
             This will take care of integrating with our NDK code. -->
        <activity android:name="com.embarcadero.firemonkey.FMXNativeActivity"
                android:label="%activityLabel%"
                android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
                android:launchMode="singleTask">
            <!-- Tell NativeActivity the name of our .so -->
            <meta-data android:name="android.app.lib_name" android:value="%libNameValue%" />
			<meta-data android:name="android.max_aspect" android:value="2.1" />
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter> 
        </activity>
        <%activity%>
        <%receivers%>
    </application>
</manifest>
<!-- END_INCLUDE(manifest) -->

 

Изменено пользователем Alex7wrt
Ссылка на комментарий
  • 0
48 минут назад, Alex7wrt сказал:

Да. Вот мой манифест:

Спасибо огромное! Заработало, если прописать данную строку в секцию <%application-meta-data%>.

Можно к вам еще один вопрос по Xiaomi?

При попытке компиляции  на  Xiaomi Redmi 5 Plus приложения с тем же именем, вместо того, которое я удалил, выскакивает ошибка, что данное приложение уже было установлено и повторная установка не возможна. ...signatures do not match the previously installed version; ignoring! Ругается на подписи. 

Как с этого устройства полностью удалить приложение или иным способом победить эту ошибку?

Ссылка на комментарий
  • 0

Уточнение: после обновления до MIUI 10 снова появилась черная полоса снизу. При этом в сторонних приложениях ее не наблюдалось. Следовательно, приведенное выше решение неполноценно.

Решение: добавить строку android:resizeableActivity="true" в секцию Activity

<?xml version="1.0" encoding="utf-8"?>
<!-- BEGIN_INCLUDE(manifest) -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="%package%"
        android:versionCode="%versionCode%"
        android:versionName="%versionName%"
        android:installLocation="%installLocation%">

    <!-- This is the platform API where NativeActivity was introduced. -->
    <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" />
<%uses-permission%>
    <uses-feature android:glEsVersion="0x00020000" android:required="True"/>
    <application android:persistent="%persistent%" 
        android:restoreAnyVersion="%restoreAnyVersion%" 
        android:label="%label%" 
        android:debuggable="%debuggable%" 
        android:largeHeap="%largeHeap%"
        android:icon="%icon%"
        android:theme="%theme%"
        android:hardwareAccelerated="%hardwareAccelerated%">

<%application-meta-data%>
		<%services%>
        <!-- Our activity is a subclass of the built-in NativeActivity framework class.
             This will take care of integrating with our NDK code. -->
        <activity android:name="com.embarcadero.firemonkey.FMXNativeActivity"
                android:label="%activityLabel%"
				android:resizeableActivity="true"
                android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
                android:launchMode="singleTask">
            <!-- Tell NativeActivity the name of our .so -->
            <meta-data android:name="android.app.lib_name" android:value="%libNameValue%" />
			<meta-data android:name="android.max_aspect" android:value="2.1" />
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter> 
        </activity>
        <%activity%>
        <%receivers%>
    </application>
</manifest>
<!-- END_INCLUDE(manifest) -->

 

Ссылка на комментарий
  • 0
В 15.09.2018 в 22:06, Alex7wrt сказал:

Ответил в личку, так как это уже другая тема

Не могли бы Вы и мне в личку прислать решение данной проблемы?

 

И, при попытке исправления файла манифеста, появляется ошибка:

No resource identifier found for attribute 'resizeableActivity' in package 'android'

Изменено пользователем HyperZen
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...