我可以创建一个简单的选项卡渲染器,它将更新我的表单工具栏项目,以使用内置的iOS图标,如下所示。
导航控制器(NavigationController)仅在视图中不为空,如果我在视图中尝试,它将为空。
问题是,在TabBar项文本被替换为实际图标之前,它会闪烁。
是否应该在其他地方拦截工具栏行为?
[assembly: ExportRenderer(typeof(TabbedPage), typeof(TabRenderer))]
namespace Cellar.iOS.Renders
{
public class TabRenderer : TabbedRenderer
{
public override void ViewWillAppear(bool animated)
{
base.ViewWillAppear(animated);
var list = new List<UIBarButtonItem>();
foreach (var item in NavigationController.TopViewController.NavigationItem.RightBarButtonItems)
{
if (string.IsNullOrEmpty(item.Title))
{
continue;
}
if (item.Title.ToLower() == "add")
{
var newItem = new UIBarButtonItem(UIBarButtonSystemItem.Add)
{
Action = item.Action,
Target = item.Target
};
list.Add(newItem);
}
if (list.Count > 0)
NavigationController.TopViewController.NavigationItem.RightBarButtonItems = list.ToArray();
}
}
}
}
请在所需代码块的末尾或执行后尝试以下代码。。。
return base.ViewWillAppear(animated);
是的,您应该覆盖PushViewController
并从NavigationRenler
方法继承。这是我在应用程序中使用的内容:
public class CustomToolbarRenderer : NavigationRenderer
{
public override void PushViewController(UIViewController viewController, bool animated)
{
base.PushViewController(viewController, animated);
List<UIBarButtonItem> newItems = new List<UIBarButtonItem>();
foreach (UIBarButtonItem i in TopViewController.NavigationItem.RightBarButtonItems)
{
if (i.Title != null)
{
if (i.Title.Equals(Constants.Toolbar.Add))
{
var newItem = new UIBarButtonItem(UIBarButtonSystemItem.Add);
newItem.Action = i.Action;
newItem.Target = i.Target;
newItems.Add(newItem);
}
else if (i.Title.Equals(Constants.Toolbar.Camera))
{
var newItem = new UIBarButtonItem(UIBarButtonSystemItem.Camera);
newItem.Action = i.Action;
newItem.Target = i.Target;
newItems.Add(newItem);
}
else if (i.Title.Equals(Constants.Toolbar.Delete))
{
var newItem = new UIBarButtonItem(UIBarButtonSystemItem.Trash);
newItem.Action = i.Action;
newItem.Target = i.Target;
newItems.Add(newItem);
}
else
newItems.Add(i);
}
else
newItems.Add(i);
}
TopViewController.NavigationItem.RightBarButtonItems = newItems.ToArray();
}
}
覆盖OnElementChanged
方法:
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
if(e.NewElement!= null)
{
var list = new List<UIBarButtonItem>();
// Your code goes here
}
}
我在活动文件中有一个膨胀的视图,布局文件碰巧有一个工具栏小部件,我希望用图标填充。我尝试使用code但是没有显示出来,工具栏文本也没有显示出来。布局的代码是这样的... 如何成功地使此工具栏在一个膨胀的视图中显示图标和文本?
Renders中间件是一个Go模板引擎的 Tango 中间件。 安装 go get github.com/tango-contrib/renders 示例 type RenderAction struct { renders.Renderer } func (x *RenderAction) Get() { x.Render("test.html", renders.T{
如何从工具栏中获取图标以更改为使用bbdd中看到的方法获得的新图标。问题是我无法访问更新活动的事件以更改图标。我尝试使用onPreareOptionsMenu方法,但无法使其工作。我无法通过将代码放入onStart来做到这一点,因为它告诉我菜单对象为空或无效。 我的活动由AppCompactActive扩展并通过AdapterView加载。当我返回片段对话框或从下一个活动开始时,我遇到了问题。 谢
我正在尝试新的工具栏组件,但导航图标出现了一些问题。我想实现一个用于反向导航的自定义图标: 在我的清单中,我为我的活动设置了一个父级: 我这样声明工具栏: 然后在“活动”中,我将工具栏配置为: 后退图标不是我用setNavigationIcon()设置的!无论我给这个方法的绘图是什么,导航图标总是后面的箭头。 我试图删除清单中的父关联,但唯一的效果是(显然)阻止按钮返回。 相反,如果我想要默认的后
我有一个工具栏。这张照片的背景颜色是明亮的橙色,最好看的颜色是白色而不是黑色。 我的默认颜色是黑色而不是白色。因为它会与其他东西冲突,所以几乎不可能被覆盖。我无法将主文本颜色更改为白色! 我设法改变了标题的颜色。我现在正在寻找的是如何将操作按钮的颜色也更改为白色。 我的代码: 主要活动: 菜单栏: 风格:
你知道我如何在Android/支持库中找到原来的汉堡包图标吗?(或如何显示) 在我的活动中 布局文件 styles.xml