我需要使用Xamarin Forms 2更改Android中所选标签的图标,例如LinkedIn应用。
这是我的代码,但它不起作用:
private void LoadTab(string title, string selectedIcon, string unselectedIcon)
{
var tab = new ContentPage();
if (Device.OS == TargetPlatform.iOS) tab.Title = title;
tab.Icon = new FileImageSource() { File = selectedIcon };
tab.Appearing += (s, a) => tab.Icon = new FileImageSource() { File = selectedIcon };
tab.Disappearing += (s, a) => tab.Icon = new FileImageSource() { File = unselectedIcon };
Children.Add(tab);
}
我也尝试过使用PagesChanged事件但结果是一样的。
这是我更改页面时记录器写的内容:
W/FragmentManager(30781): moveToState: Fragment state for FragmentContainer{e26ef3e #3 id=0x2 android:switcher:2:565409837} not updated inline; expected state 3 found 2
答案 0 :(得分:4)
您应该创建selector drawable xml
,而不是仅使用png
文件作为图标。
例如:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/selectedIcon" android:state_selected="true"></item>
<item android:drawable="@drawable/selectedIcon" android:state_pressed="true"></item>
<item android:drawable="@drawable/unselectedIcon"></item>
将它放在android项目中的drawable
文件夹中。
然后:
tab.Icon = new FileImageSource() { File = iconSelector };
您不需要检查条件