Xamarin.Forms Android Tabbar custom with Icon and Text -


i have checked , implemented following links: android action bar tabs, styling icon , text together , can see image above text. want increase height of tabbar icon have larger size. checked how change action bar size & https://blog.xamarin.com/material-design-for-your-xamarin-forms-android-apps/. , tried implement appcompatactivity in xamarin.forms project. @ first, android activity derived global::xamarin.forms.platform.android.formsapplicationactivity , converted global::xamarin.forms.platform.android.formsappcompatactivity. , custom renderer implemented tabbedpage. know must converted tabbedpagerender appcompatactivity. updated renderer too. custom renderer not being called. , can't change height of tabbar placed in actionbar appcompatactivity. let me know implemented wrong. thank you.

if have code, please post it.

  1. in activity, check if have

    formsappcompatactivity.toolbarresource = resource.layout.toolbar; formsappcompatactivity.tablayoutresource = resource.layout.tabs;

in oncreate method, need toolbar.xml , tabs.xml in /resources/layout folder.

  1. in renderer class, make sure add

    [assembly: exportrenderer(typeof (yourtabbedpage), typeof (yourtabbedpagerenderer))]

  2. tabbedpagerenderer doesn't expose tablayout you, reflection needed

    public class yourtabbedpagerenderer : tabbedpagerenderer { private tablayout _mytablayout;

    protected override void onelementchanged(elementchangedeventargs<tabbedpage> e) {     base.onelementchanged(e);      var fieldinfo = typeof (tabbedpagerenderer).getfield("_tablayout", bindingflags.instance | bindingflags.nonpublic);     system.diagnostics.debug.assert(fieldinfo != null, "fieldinfo != null");     _mytablayout = (tablayout) fieldinfo.getvalue(this);      // uncomment disable scrolling     //var propinfo = typeof (tabbedpagerenderer).getproperty("useanimations", bindingflags.instance | bindingflags.nonpublic);     //propinfo.setvalue(this, false);      if (e.oldelement != null)     {      }      if (e.newelement != null)     {         if (_mytablayout.tabcount != this.element.children.count)             return;          (int index = 0; index < this.element.children.count; ++index)         {             _mytablayout.gettabat(index).settext("");              fileimagesource icon = this.element.children[index].icon;              if (string.isnullorempty(icon))                 continue;              var imageview = new appcompatimageview(this.context);             imageview.setpadding(4, 4, 4, 4);             var drawable = resourcemanager.getdrawablebyname(icon.file);             imageview.setimageresource(drawable);             _mytablayout.gettabat(index).setcustomview(imageview);         }          _mytablayout.gettabat(0).select();     } } 

    }


Comments