清单资源中定义的AndreidManifest选择样式

wz8daaqr  于 2022-09-21  发布在  其他
关注(0)|答案(1)|浏览(179)

我正在使用Delphi开发穿戴操作系统应用程序。我想要将Android:windowSwipeToDismisse设置为False,但在Delphi中我只能修改Android清单,不能更改样式(或者我不知道如何更改),所以我想做一些类似的事情

<?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%">
    <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" />
<%uses-permission%>
    <uses-feature android:glEsVersion="0x00020000" android:required="true"/>

    <queries>
<%queries-child-elements%>
    </queries>

      <uses-permission android:name="android.permission.INTERNET" />
    <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%"
        android:resizeableActivity="false"
        android:requestLegacyExternalStorage="true"
        android:usesCleartextTraffic="true">
<%provider%>
<%application-meta-data%>
<%uses-libraries%>
<%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:theme="@manifest/Themeabc"
            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%" />

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

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
<%activity%>
<%receivers%>
<resources>
  <style name="Themeabc" parent="@android:style/Theme.DeviceDefault.Light">
      <item name="android:windowSwipeToDismiss">false</item>
  </style>
</resources>
    </application>
</manifest>

但这里有个问题:

android:theme="@manifest/Themeabc"

我收到错误:C:\Path\androidManifest.xml:51:Error:Error:找不到与给定名称匹配的资源(位于‘Theme’,值为‘@MANIFEST/Themeabc’)。

也许写下“@MANIFEST/Themeabc”换句话说就是帮助?但我不知道这个Android.xml到底是如何工作的

我可以定义本地风格并像在html中一样使用它吗?

我尝试了@androidManifest/Themeabc,@MANIFEST/Themeabc。

ui7jx7zq

ui7jx7zq1#

问题似乎出在您指定的“@MANIFEST”资源类型上。

根据文档,Android资源(如样式、可绘制内容、字符串等)表示为以下格式的值(这是一个Java注解):@[package:]type/name

如果资源是由您的应用程序提供的(包括由库依赖项提供的资源,因为库资源合并到您的应用程序资源中),则可以省略此处的包名称。当您想要使用Android框架中的资源时,唯一另一个有效的包名是“Android”。

这里的类型是资源的类型,例如“字符串”或“Drawable”(而不是您提到的“清单”中声明的文件)。名称是标识特定资源的名称。下面是一个例子:

<activity android:icon="@drawable/smallPic" ... >

对于样式(和主题),默认注解为:@[package:]style/style_name

在应用程序的资源XML文件中声明如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="style_name" parent="@[package:]style/style_to_inherit">
      <item name="[package:]style_property_name">style_value</item>
    </style>
</resources>

当在“Android清单”中的活动中使用这种风格/主题时,它将是这样的:

<manifest ... >
    <application ... >
        <activity android:theme="@style/Theme.AppCompat.Light" ... >
        </activity>
    </application>
</manifest>

您必须正确设置资源的类型。

此外,如果设置资源类型不能解决问题,那么您应该将样式声明从Android清单移到“res/Value”文件夹中的一个独立的XML资源文件中。

这个XML文件可以只用于样式,也可以用于在一个<resources>节点下组合其他Android Simple资源。因为样式是使用“name”属性中提供的值(而不是XML文件的名称)引用的。

文件位置必须是“res/values/filename.xml”,其中文件名是任意的。元素的名称将用作资源ID。

在Delphi中,您必须创建此XML文件并将其添加到部署管理器中,并将其远程文件属性设置为“res/value/filename.xml”

您可以通过查看以下链接获取有关Android API的更多信息:

相关问题