• 0
Hangar-18

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

Вопросы

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

При компиляции приложения и запуске на физическом устройстве  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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21 ответ на этот вопрос

  • 0

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
19 минут назад, ENERGY сказал:

Если включить Full screen у формы, останется полоса? 

Вот так получается.

Screenshot_2018-09-15-20-29-29-030_com.embarcadero.Test4.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 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

Файлы проекта находятся в той же папке, что и AndroidManifest.template.xml?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Только что, Alex7wrt сказал:

Файлы проекта находятся в той же папке, что и AndroidManifest.template.xml?

Да, конечно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Хм...

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 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

Создал с нуля простую форму. То же самое. Пробовал добавить строку во все файлы манифеста. Безрезультатно. Странно. ((

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
48 минут назад, Alex7wrt сказал:

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
11 минут назад, Alex7wrt сказал:

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

Спасибо! По теме получил отличный ответ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

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

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