Android Studio 有 2 个用于同一活动的布局活动文件。有必要吗?如何为所有较新的 SDK 版本保留 1 个文件?

Kus*_*ush 5 android directory-structure

在我的项目中,我有一个名为“marquee”的活动。但是,出于某种原因,“布局”中的子文件夹中有 2 个与该活动相关联的文件。我不记得做了。为什么会在这里?我一直在浪费时间更改“activity_marquee.xml”中的代码,但没有任何变化,因为我的手机只会使用以某种方式创建的“activity_marquee.xml (v26)”。如何确保所有手机都使用相同的“activity_marquee.xml”?我将如何删除不必要的?如果我删除其中一个,它们两个,甚至包含这两个活动的文件夹都会被删除。

我尝试将 minSdkVersion 和 targetSdkVersion(在 build.gradle 中)更改为不同的值,希望只保留 1 个活动,但 (v26) 仍然保留。我还尝试添加到 AndroidManifest.xml 并更改最小、目标和最大 sdk 版本,但两个文件都保留了下来。

https://i.imgur.com/qrPoPHv.png(链接到图片,因为我还没有 10 个声望可以发布它)

构建.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'
    }
}
Run Code Online (Sandbox Code Playgroud)

}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)

<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>
Run Code Online (Sandbox Code Playgroud)

我只想为每个活动使用 1 个布局文件,并让它在所有更高级别的 android API 上工作。两周前,我根据教程制作了另一个应用程序,而且我不必更改 2 个文件中的布局。如果可能的话,我也想在这里。

Ale*_*ann 5

您需要了解资源限定符的概念。您可以为不同的设备设置提供不同的资源。这最常用于不同的图像分辨率或翻译,例如通过具有“values”和“values-de”(德语为 de)文件夹,它们都包含一个 strings.xml 文件。您的应用程序将始终选择与您的手机配置相匹配的最具体的资源。假设我将手机设置为德语,应用程序将在 values-de 文件夹中查找资源。否则它将回退到默认值文件夹。

如果您的两个布局文件相同,您只需将其从 layout-v26 文件夹中删除即可。如果该文件夹不包含任何其他文件,您可以将其完全删除。

如果我删除其中一个,它们两个,甚至包含这两个活动的文件夹都会被删除。

实际上,这两个文件位于不同的文件夹中。但是如果您在项目资源管理器中选择了默认的“Android”视图,则 Android Studio 会将它们显示为在同一个视图中。如果您将视图切换到“项目”,您会看到它们位于不同的文件夹“res/layout”和“res/layout-v26”中。

在此处输入图片说明