我在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" />
但这就是我在运行应用程序时所获得的对话框标题:
如果没有SetTitle行,标题就是&#34; ActivityTwo&#34;。有人能帮我解决这个问题吗?
答案 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);
清洁并重建您的解决方案,以防万一。
希望它有所帮助.-