我在其他各種佈局中使用LinearLayout
作爲Xamarin(Android開發人員atm)中兩個AXML文件底部的菜單欄。在Xamarin中切換視圖,但保持點擊事件
在我的主要活動中,我設置了點擊事件以在兩個AXML視圖之間切換,這兩個視圖都包括LinearLayout
菜單欄。
第一個按鈕點擊工作,並切換佈局,但之後,它看起來沒有任何我的點擊事件工作了。我嘗試重新初始化點擊事件,但無濟於事。
請考慮下面的代碼:
Main.AXML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:id="@+id/MyButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Main Page" />
<include
layout="@layout/menu_bar" />
</LinearLayout>
Other.AXML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:id="@+id/MyButton2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Other Page" />
<include
layout="@layout/menu_bar" />
</LinearLayout>
MainActivity.cs
using Android.App;
using Android.Widget;
using Android.OS;
namespace Tracker
{
[Activity(Label = "Tracker", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
LinearLayout newsMenuItemLayout = FindViewById<LinearLayout>(Resource.Id.newsMenuItem);
LinearLayout friendsMenuItemLayout = FindViewById<LinearLayout>(Resource.Id.friendsMenuItem);
newsMenuItemLayout.Click += (sender, args) =>
{
SetContentView(Resource.Layout.Other);
};
friendsMenuItemLayout.Click += (sender, args) =>
{
SetContentView(Resource.Layout.Main);
};
}
}
menu_bar.AXML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout03"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="75dp"
android:weightSum="100"
android:layout_alignParentBottom="true">
<LinearLayout
android:orientation="vertical"
android:layout_weight="20"
android:layout_width="0dp"
android:layout_height="match_parent"
android:id="@+id/newsMenuItem"
android:background="@drawable/selector"
android:paddingTop="6dp"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true">
<ImageView
android:src="@drawable/news_icon"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/imageView1"
android:scaleType="fitCenter"
android:adjustViewBounds="false" />
<TextView
android:text="News"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textView1"
android:gravity="center_horizontal" />
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_weight="20"
android:layout_width="0dp"
android:layout_height="match_parent"
android:id="@+id/eventsMenuItem"
android:background="@drawable/selector"
android:paddingTop="6dp"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true">
<ImageView
android:src="@drawable/events_icon"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/imageView2"
android:scaleType="fitCenter"
android:adjustViewBounds="false" />
<TextView
android:text="Events"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textView2"
android:gravity="center_horizontal" />
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_weight="20"
android:layout_width="0dp"
android:layout_height="match_parent"
android:id="@+id/resultsMenuItem"
android:background="@drawable/selector"
android:paddingTop="6dp"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true">
<ImageView
android:src="@drawable/results_icon"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/imageView3"
android:scaleType="fitCenter"
android:adjustViewBounds="false" />
<TextView
android:text="Results"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textView3"
android:gravity="center_horizontal" />
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_weight="20"
android:layout_width="0dp"
android:layout_height="match_parent"
android:id="@+id/friendsMenuItem"
android:background="@drawable/selector"
android:paddingTop="6dp"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true">
<ImageView
android:src="@drawable/friends_icon"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/imageView4"
android:scaleType="fitCenter"
android:adjustViewBounds="false" />
<TextView
android:text="Friends"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textView4"
android:gravity="center_horizontal" />
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_weight="20"
android:layout_width="0dp"
android:layout_height="match_parent"
android:id="@+id/moreMenuItem"
android:background="@drawable/selector"
android:paddingTop="6dp"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true">
<ImageView
android:src="@drawable/more_icon"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/imageView5"
android:scaleType="fitCenter"
android:adjustViewBounds="false" />
<TextView
android:text="More"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textView5"
android:gravity="center_horizontal" />
</LinearLayout>
我假設,因爲我重裝我MENU_BAR,我需要重新初始化我的點擊事件,但怎麼會去了解的最佳方式那?
我之前把我的菜單欄加載爲ActionBar
,我認爲這是一個與內容視圖分開的實體,但由於無法從頂部移動,我不得不重新考慮這種方法。
任何想法/解釋如何我可以去這個非常感謝。
你重置你的整個內容來看,你可以去他們切換的知名度的路線,或者你只需更換菜單欄本身,而不是調用'SetContentView'多次。基本上你會得到你的menuBar的引用,得到它的父視圖,並膨脹你的新佈局,並刪除舊的menuBar並添加新的。 – Jack