В Android Studio есть 2 файла макета для одной и той же активности. Это необходимо? Как мне сохранить 1 файл для всех новых версий SDK? - PullRequest
0 голосов
/ 04 января 2019

В моем проекте у меня есть мероприятие под названием "Marquee". Однако по какой-то причине во вложенной папке в «макете» есть 2 файла, связанные с этим действием. Я не помню, как это делал. Почему это здесь? Я тратил время на изменение кода в "activity_marquee.xml", но ничего не менялось, потому что мой телефон будет использовать только "activity_marquee.xml (v26)", который был каким-то образом создан. Как сделать так, чтобы все телефоны использовали один и тот же файл «activity_marquee.xml»? А как бы удалить ненужный? Если я удаляю одно из них, оба они, и даже папка, содержащая 2 действия, удаляются.

Я пытался изменить мои minSdkVersion и targetSdkVersion (в build.gradle) на разные значения, надеясь, что останется только 1 действие, но (v26) все еще остается. Я также попытался добавить в AndroidManifest.xml и изменить минимальную, целевую и максимальную версии SDK, но оба файла остаются.

https://i.imgur.com/qrPoPHv.png (ссылка на изображение, потому что у меня еще нет 10 репутаций, чтобы опубликовать его)

build.gradle:

android {
compileSdkVersion 28
defaultConfig {
    applicationId "(removed)"
    minSdkVersion 19
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

}

AndroidManifest.xml

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

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

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>

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

Я хотел бы использовать только 1 файл макета для каждого действия и заставить его работать на всех API-интерфейсах Android более высокого уровня. Я сделал другое приложение всего 2 недели назад на основе учебника, и мне не нужно было менять макеты в 2 файлах. Я бы хотел того же здесь, если возможно.

1 Ответ

0 голосов
/ 04 января 2019

Вам необходимо понять концепцию квалификаторов ресурсов . Вы можете предоставить разные ресурсы для разных настроек устройства. Это чаще всего используется для разных разрешений изображения или перевода, например, при наличии папки «values» и «values-de» (de для немецкого языка), которые обе содержат файл strings.xml. Ваше приложение всегда будет выбирать наиболее конкретный ресурс, который соответствует конфигурации вашего телефона. Скажем, если мой телефон настроен на немецкий язык, приложение будет искать ресурс в папке values-de. В противном случае он вернется к папке значений по умолчанию.

Если оба ваших файла макета идентичны, вы можете просто удалить его из папки layout-v26. Если в папке нет других файлов, вы можете полностью удалить ее.

Если я удаляю один из них, оба, и даже папку, содержит 2 действия удаляется.

На самом деле оба файла находятся в разных папках. Но Android Studio показывает их так, как если бы они были в одном и том же виде, если в обозревателе проектов выбран режим «Android» по умолчанию. Если вы переключите представление на «Проект», вы увидите, что они находятся в разных папках «res / layout» и «res / layout-v26».

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...