【问题标题】:VS - Android - How to apply a style to main activityVS - Android - 如何将样式应用于主要活动
【发布时间】:2017-12-11 18:14:56
【问题描述】:

只需要澄清我应该命名什么,在哪里以及如何将自定义样式应用于主要活动。

我想将自定义样式“Theme.Transparent”应用到来自 CustomStyles.xml 文件的主要活动。为此,您应该将以下部分添加到 AndroidManifest 文件中:

<activity android:name="???" android:theme="@style/Theme.Transparent"/> // see main question about this

我不知道应该在那里使用什么名称以及它与应用程序中的其他名称的对应关系(请参阅我的主要问题)。我发现了一些您指定活动名称的地方。我在代码中将这些地方标记为 1、2、3、4(请参阅有关每个数字的其他问题)

MainActivity.cs

namespace CustomName // 1
{
    [Activity(Name = "???" Label = "CustomName", MainLauncher = true, Icon = "@drawable/icon")] // 2
    public class MainActivity : Activity // 3
    {

AndroidManifest.xml 中:

<application android:label="CustomName"> // 4
    <activity android:name="ActivityName"> // 5
    </activity>
</application>

现在的问题

主要问题:我应该在 AndroidManifest.xml 中为主要活动添加 activity 部分以对其应用自定义样式吗?主要活动应该在那里有什么名称?如果我在那里添加 activity 部分并为其命名,我还应该在哪里使用此名称以使此样式与此活动一起使用?名字乱七八糟

代码 1) 应用程序命名空间名称应该是应用程序名称的字面意思吗?

代码 2) [Activity] 名称和标签标签,它们是做什么用的,我应该如何命名?

代码 3)公共类 MainActivity,这个名字对样式有影响吗?

代码 4) 这是做什么用的?

代码 5) 查看主要问题

这一切是如何联系起来的?

为 Joe LV 的回答编辑

AndroidManifest.xml:

<application android:label="Custom Application Name"> // this name does not appear in the phone anyway
</application>

styles.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="Theme.Transparent" parent="android:style/Theme.Translucent">
    ...
  </style>
</resources>

MainActivity.cs:

namespace CustomName
{
    [Activity(Name = "CustomName.MainActivity", Label = "Custom Activity Name", MainLauncher = true, Icon = "@drawable/icon", Theme = "@styles/Theme.Transparent")] // the phone application receives name from this label

Q1) AndroidManifest.xml 中的错误“未找到与给定名称匹配的资源(在 'theme' 处,值为 '@styles/Theme.Transparent')”答案:从“@”中的“styles”中删除 s样式/Theme.Transparent”

Q2)手机中的应用程序从主活动标签接收名称,而不是从应用程序标签接收名称。应用程序标签的用途是什么?为什么应用程序本身会获得活动的名称?

【问题讨论】:

  • &lt;activity android:name&gt; 值应与您的 class 名称匹配,该名称是 Activity 的子类。如果您使用[Activity] 属性,则无需将您自己的部分添加到AndroidManifest.xml,因为它将在构建时生成条目。您可以使用[Activity Name=] 指定名称。
  • A subclass 是一个继承另一个类的类。因此,在您的示例中将是您的 MainActivity
  • 不,我不是那个意思。 MainActivity 是 Activity 的子类。你的错误是因为你在styles上有一个s,而正确的用法是style
  • 请不要通过破坏您的帖子为他人增加工作量。通过在 Stack Exchange 网络上发帖,您已在 CC BY-SA 4.0 license 下授予 Stack Exchange 分发该内容的不可撤销的权利(即无论您未来的选择如何)。根据 Stack Exchange 政策,帖子的非破坏版本是分发的版本。因此,任何破坏行为都将被撤销。如果您想了解更多关于删除帖子的信息,请参阅:How does deleting work?
  • 您现在可能已经意识到:我们发现破坏行为几乎是在它完成的那一刻,我们每次都会恢复它。请停止为他人做更多的工作。

标签: android visual-studio xamarin android-activity android-manifest


【解决方案1】:

代码 1) 可以通过更改AndroidManifest.xml 中的应用程序标签来更改应用程序名称,例如:&lt;application android:label="MyName"&gt;,因此您的应用程序名称已更改为“MyName”,您可以在手机屏幕上看到您的应用程序命名空间仍然是 CustomName

代码2)【活动】NameLabel标签,两者都可以自己改。 Name 是当前活动的名称,可用于显式启动此活动,就像@Jon 所说,它应该与您的类名匹配,Label 是当前活动的标题,您可以在顶部看到它你的活动。

代码 3) MainActivity 的名称与样式无关。您可以在 styles.xml 文件中自定义它。

代码 4) 请参考代码 1)

代码 5) 主要问题。正如@Jon 所说,“如果您使用 [Activity] 属性,则无需将您自己的部分添加到 AndroidManifest.xml,因为它将在构建时生成条目。”

请将您的样式放入styles.xml 文件而不是CustomStyles.xml 文件,并通过Theme="@style/Theme.Transparent" 引用。活动名称应该是这样的:[Activity Name=package.TypeName],所以在你的代码中应该是[Activity Name=CustomName.MainActivity]。 最后,你的 Activity 属性可以是这样的:

[Activity(Label = "YourName", MainLauncher = true,Name = "CustomName.MainActivity",Theme ="@style/Theme.Transparent")]

更新:

第二季度)

  • 你的应用程序包含许多活动,每个Activity 都有它的标签,当这个活动是OnResume 时可以看到标签。这将告诉用户他们在使用您的应用时所处的位置,因此用户不会迷失在您的应用中。
  • Application 的标签是您应用的名称,例如“Facebook”、“Google”等。

【讨论】:

    猜你喜欢
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 2015-12-16
    • 2011-09-03
    • 1970-01-01
    • 2018-12-18
    相关资源
    最近更新 更多