繁体   English   中英

Xamarin:如何在运行时将以下android主题应用于我的活动?

[英]Xamarin: How do I apply the following android theme to my activity at runtime?

我有以下活动将主题指定为属性

[Activity(Label = "PermissionsActivity", Theme = "@android:style/Theme.Translucent.NoTitleBar")]
public class PermissionsActivity: Activity

这很好用,但是如何在运行时应用相同的功能? 也许可以通过在OnCreate调用SetTheme来实现。 我可以看到SetTheme接受资源ID整数。 我很难找到上述主题的相应Xamarin.Android常量。 请帮忙

将主题添加到Resource文件夹下的style.xml文件中,然后以int从资源中访问主题

<style name="MyTheme" parent="Theme.Translucent.NoTitleBar">
</style>

进行活动

this.SetTheme(Resource.Style.MyTheme);

在您的onCreate方法中添加以下代码:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// Call setTheme before creation of any(!) View.
 setTheme(android.R.style.Theme_Dark);

// ...
setContentView(R.layout.main);

作为参考,请检查此链接

当您在android项目资源下的任何文件夹中添加某个主题时,Visual Studio会执行的操作是在resource文件夹下的ResourceDesigner.cs文件内创建一个相应的int值。

现在,在运行时中,当您需要将它们添加到代码中时,它们可以按如下方式使用:

  • 如果资源是样式,则可以在Resource.Style.YourResourceName
  • 如果资源是维,则在Resource.Dimen.YourResourceName可用
  • 如果资源是字符串,则在Resource.String.YourResourceName可用
  • 如果资源是可绘制文件夹下的图像,则在Resource.Drawable.YourResourceName可用
  • 如果资源是mipmap文件夹下的图像,则该Resource.Mipmap.YourResourceNameResource.Mipmap.YourResourceName可用,依此类推。

注意:这些属性始终是整数。

在您的情况下,因为它是一个主题(基本上是一种样式)

因此,您可以在Activity中获得以下信息:

this.SetTheme(Resource.Style.MyTheme);

在一个片段中,像这样:

this.Activity.SetTheme(Resource.Style.MyTheme);

希望这可以帮助,

如有查询,请还原。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM