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

时间:2018-10-05 10:30:33

标签: c# android xamarin android-activity xamarin.android

我进行以下活动,将主题指定为属性

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

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

3 个答案:

答案 0 :(得分:1)

将主题添加到Resource文件夹下的style.xml文件中,而不是以int的身份从资源中访问主题

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

设置活动

this.SetTheme(Resource.Style.MyTheme);

答案 1 :(得分:0)

在您的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);

For reference check this Link

答案 2 :(得分:0)

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

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

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

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

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

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

this.SetTheme(Resource.Style.MyTheme);

在一个片段中,像这样:

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

希望这会有所帮助,

在查询的情况下还原。