同じ問題を実行し、GitHubにあるコードからカスタムTabbedPageRendererを作成しようとしましたが、いくつかのクラスとインターフェイスが内部としてスコープされているため運がうまくいきませんでした。解決策を見つけましたが、ハッキーなものですが、私たちの場合はうまくいくようです。
[assembly: ExportRenderer(typeof(BottomTabbedPage), typeof(BottomTabbedPageRenderer))]
namespace My.XForms.Droid.Renderers
{
public class BottomTabbedPageRenderer : TabbedPageRenderer
{
protected override void OnLayout(bool changed, int l, int t, int r, int b)
{
InvertLayoutThroughScale();
base.OnLayout(changed, l, t, r, b);
}
private void InvertLayoutThroughScale()
{
ViewGroup.ScaleY = -1;
TabLayout tabLayout = null;
ViewPager viewPager = null;
for (int i = 0; i < ChildCount; ++i)
{
Android.Views.View view = (Android.Views.View)GetChildAt(i);
if (view is TabLayout) tabLayout = (TabLayout)view;
else if (view is ViewPager) viewPager = (ViewPager)view;
}
tabLayout.ScaleY = viewPager.ScaleY = -1;
viewPager.SetPadding(0, -tabLayout.MeasuredHeight, 0, 0);
}
}
}
ちょうどページのレイアウトをスケーリングして、「doesnの再子供をスケーリング:あなたは次のように新しいレンダラーを作成して、アンドロイドのための新しいレンダラーをリンクすることができるように
は単にTabbedPageから継承する新しいBottomTabbedPageを作成しましたオリジナルのTabbedPageRendererがViewPagerをTabLayoutと重ならないようにパディングするので、含まれているページには開始ギャップが表示され、その結果、ネガティブなパディングフィックスが挿入されるため、このトリックを行います。
理想的なソリューションではありませんが、少なくとも機能しますが、少なくとも完全なTabbedPageの実装は実行しません。
ありがとうございますコードのためのパブロ。本当に感謝しております。そして、質問を更新しないと申し訳ありません。これをチェックしていただけますか? https://forums.xamarin.com/discussion/comment/211381#Comment_211381 –
誰かがbottomTabを使ってXFコードを作成しました。すべてがうまく見えます。あなたが新しいcontentPageをプッシュすると、Bottombarは消えてしまうという問題だけです。 –
そしてあなたのコードも試してみます。ありがとう。私は本当に混乱しているし、アプリをより良いUXにする決定をすることはとても難しいです。 –