如何在Xamarin Android对话框活动中动态设置标题?

时间:2017-02-22 17:03:58

标签: xamarin.android

我在Xamarin Android上有2项活动。请注意,第二个样式设置为对话框打开。

[Activity(Label = nameof(ActivityOne), HardwareAccelerated = true, ScreenOrientation = Android.Content.PM.ScreenOrientation.Portrait)]
public class ActivityOne : Activity { ... }

[Activity(Label = nameof(ActivityTwo), HardwareAccelerated = true, ScreenOrientation = Android.Content.PM.ScreenOrientation.Portrait, Theme = "@android:style/Theme.Holo.Dialog")]
public class ActivityTwo : Activity { ... }

第一个叫第二个像这样:

var activity = new Intent(this, typeof(ActivityTwo));
StartActivity(activity);

当第二个活动打开时,我希望能够动态地在对话框上设置标题。

我尝试在第二项活动的创作中这样做:

protected override void OnCreate(Bundle bundle)
{
    base.OnCreate(bundle);
    SetContentView(Resource.Layout.ActivityTwo);
    SetTitle(Resource.Id.title);

    ...
}

其中title被定义为" hidden" ActivityTwo.axml中的textview:

<TextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:id="@+id/title"
  android:text="Example Title"
  android:visibility="gone" />

但这就是我在运行应用程序时所获得的对话框标题:

dialog activity title

如果没有SetTitle行,标题就是&#34; ActivityTwo&#34;。有人能帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:4)

解决方案只是在OnCreate()

中使用以下内容
this.Title = "ExampleTitle";

答案 1 :(得分:1)

如果您只想设置标题,则活动顶部的标签属性为标题。这就是为什么如果你不SetTitle它显示 ActivityTwo ,因为你告诉它使用nameof(ActivityTwo)

[Activity(Label = "Here the title you want to show", HardwareAccelerated = true, ScreenOrientation = Android.Content.PM.ScreenOrientation.Portrait, Theme = "@android:style/Theme.Holo.Dialog")]
public class ActivityTwo : Activity { ... }

关于您的尝试,您应该将Resource.String传递给该方法。我们假设您在string.xml文件中有一个条目 HelloActivityTitle

SetTitle(Resource.String.HelloActivityTitle);

这也将设置标题。

第三个选项是Window.SetTitle,它接收string或Java CharSequence&#34;。

 Window.SetTitle("Here the title you want to show");

<强>更新

Window.SetTitle("Here the title you want to show");

应该从OnResume方法调用。

但是使用下面的方法可以从OnCreate

调用它
SetTitle(Resource.String.HelloActivityTitle);

清洁并重建您的解决方案,以防万一。

希望它有所帮助.-