我在Xamarin.Forms應用程序中使用了選項卡式頁面與主詳細信息頁面進行導航。目前,當從主詳細信息頁面中選擇菜單選項時,會在頁面內容中添加一個新的標籤頁面。我想放置一個按鈕關閉選項卡標題字段中的選項卡。這可能嗎?目前,我只在該標籤的內容頁面中有一個按鈕,但這不太理想。我希望它是非常web瀏覽器。提前致謝!編號:我已添加image。基本上,我只想在標籤欄中的每個項目的右側添加一個「X」按鈕,以允許我關閉該選項卡。就像你會在Chrome或其他東西。如何在Xamarin.Forms中的TabbedPage的選項卡中放置按鈕?
回答
您可以使用自定義渲染器在android平臺上創建自定義TabbedPage
。不同意Yuri,在android上我們可以添加一個圖像到標籤,實際上我們可以自定義標籤的佈局。
既然在你的圖片中,我看到你沒有使用每個標籤的Icon
屬性,我使用這個圖標作爲關閉按鈕。 但是當然你也可以不用這個,它是自定義的。
在PCL,創建一個MyTabbedPage
:
public class MyTabbedPage : TabbedPage
{
}
在Android平臺爲它創建一個渲染:
[assembly: ExportRenderer(typeof(MyTabbedPage), typeof(MyTabbedPageRenderer))]
namespace YOURNAMESPACE.Droid
{
public class MyTabbedPageRenderer : TabbedPageRenderer
{
private ObservableCollection<Xamarin.Forms.Element> children;
private IPageController controller;
protected override void SetTabIcon(TabLayout.Tab tab, FileImageSource icon)
{
base.SetTabIcon(tab, icon);
tab.SetCustomView(Resource.Layout.mytablayout);
var imagebtn = tab.CustomView.FindViewById<ImageButton>(Resource.Id.closebtn);
imagebtn.SetBackgroundDrawable(tab.Icon);
var title = tab.CustomView.FindViewById<TextView>(Resource.Id.tabtitle);
title.Text = tab.Text;
imagebtn.Click += (sender, e) =>
{
var closebtn = sender as ImageButton;
var parent = closebtn.Parent as Android.Widget.RelativeLayout;
var closingtitle = parent.FindViewById<TextView>(Resource.Id.tabtitle);
foreach (var child in children)
{
var page = child as ContentPage;
if (page.Title == closingtitle.Text)
{
children.Remove(child);
break;
}
}
};
}
protected override void OnElementChanged(ElementChangedEventArgs<TabbedPage> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
controller = Element as IPageController;
children = controller.InternalChildren;
}
}
}
}
使用方法如下:
<local:MyTabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:TabbedPageForms"
x:Class="TabbedPageForms.MainPage">
<local:TodayPage Title="Today" Icon="hamburger.jpg" />
<local:SchedulePage Title="Schedule" Icon="hamburger.jpg" />
</local:MyTabbedPage>
後面的代碼,不要忘記更換MainPage
繼承MyTabbedPage
:
public partial class MainPage : MyTabbedPage
{
public MainPage()
{
InitializeComponent();
}
}
請注意這裏,如果你仔細看我的代碼,你會發現,我所使用的每個標籤的Title
的比較和刪除匹配的項目,它會找到第一個匹配的標題並刪除該標題的頁面。如果您有多個標題相同的標籤,這可能會導致問題。這是這個演示的潛在錯誤,你可以試着解決它。
更新:
忘了張貼mytablayout
代碼,這裏是:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView android:id="@+id/tabtitle"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_centerInParent="true"
android:gravity="center_horizontal" />
<ImageButton
android:id="@+id/closebtn"
android:layout_height="30dp"
android:layout_width="30dp"
android:scaleType="fitCenter"
android:layout_alignParentRight="true"
android:gravity="center" />
</RelativeLayout>
我真的很感激。我將在早上嘗試此操作,並在實施後標記答案。我希望有一天能像你一樣善於編程。 – user5661402
@ user5661402,祝你好運;) –
對不起,你在哪裏放置__mytablayout__文件?它是__。axml__? – user5661402
- 1. 如何在Xamarin.Forms中自定義TabbedPage的Tab項目?
- 2. 如何在查找我選項卡上放置取消按鈕?
- 3. Xamarin.Forms:巴頓在TabbedPage
- 4. 如何將圖像放置在android的選項卡活動選項卡中?
- 5. 按鈕不會更改JQuery UI選項卡中的選項卡
- 6. 切換選項卡中的按鈕
- 7. IE6中的jQuery選項卡和按鈕
- 8. OnClick TabHost中的選項卡按鈕
- 9. 選項卡中的下一個按鈕
- 10. 按鈕的Bootstrap選項卡?
- 11. 如何從javafx中的選項卡中刪除關閉按鈕
- 12. 如何在jQuery選項卡中放置右對齊的鏈接?
- 13. 如何在重新選擇Ionic 2中的選項卡時重新放置選項卡中的頁堆棧
- 14. jQuery選項卡:按索引設置選項卡導航按鈕的css
- 15. 我應該在哪裏把TabbedPage的圖標放在Xamarin.Forms
- 16. 如何在Zendframework項目中放置一個按鈕的圖像
- 17. TabControl選項卡按鈕位置
- 18. 如何通過單擊按鈕切換jTabbedPane中的選項卡?
- 19. 如何使用按鈕切換片段中的選項卡?
- 20. 如何刪除uCommerce中選項卡上的現有按鈕?
- 21. 如何使用按鈕更改react-bootstrap中的選項卡?
- 22. 如何更改按鈕上的選定選項卡單擊WPF TabControl中的按鈕在標題中
- 23. 如何在通知中放置按鈕?
- 24. 如何將按鈕放置在中心?
- 25. 如何在選項卡中添加關閉按鈕,JTabbedPane
- 26. Xamarin.forms選項卡式頁面
- 27. 作爲選項卡的單選按鈕
- 28. 如何鏈接到tabGroup中的特定選項卡並使用不同選項卡的窗口中的按鈕?
- 29. 如何在瀏覽器選項卡中放置圖像/徽標
- 30. 按鈕顯示選項卡
你能告訴你想要做什麼了嗎? –
@YuriS我剛剛添加了圖片, – user5661402
你顯示了你有什麼,但不是你想要的,對嗎? –