HOWTO:操纵导航栏上的后退箭头图标和按钮(Xamarin Forms / Android)

时间:2019-10-07 22:26:47

标签: xamarin.forms xamarin.android

我正在尝试更改导航栏中后退箭头的大小。

使用来自this文章的信息,我添加了以下代码:

preexec

如果这确实是正确的路径,则在注释“代码在这里?”标记的区域中输入什么代码?

*更新*

我意识到我要找出的问题在我最初的问题中并未完全描述。

更具体地说,当我提到要调整导航栏后退箭头的大小时,我真正想做的就是调整图标上显示的按钮的大小。

例如,如果我使用如下代码缩小导航栏的高度:

<template>
  <v-row>
    <v-col cols="12" sm="6" md="4">
      <v-dialog
        ref="dialog"
        v-model="modal"
        :return-value.sync="date"
        persistent
        width="290px"
      >
        <template v-slot:activator="{ on }">
          <v-btn color="success" dark v-on="on">Call datepicker</v-btn>
        </template>
        <v-date-picker v-model="date" scrollable>
          <div class="flex-grow-1"></div>
          <v-btn text color="primary" @click="modal = false">Cancel</v-btn>
          <v-btn text color="primary" @click="$refs.dialog.save(date)">OK</v-btn>
        </v-date-picker>
      </v-dialog>
    </v-col>
  </v-row>
</template>

<script>
  export default {
    data: () => ({
      modal: false,
    }),
  }
</script>

出现图标的按钮将被剪裁。

最终,我要完成的工作是调整图标的大小图标出现的按钮。我已经想出了前者的方法。

2 个答案:

答案 0 :(得分:0)

  

我正在尝试更改导航栏中后退箭头的大小。

如果要更改导航栏中的后退按钮的大小,可以从工具栏资源中的Drawable获取新图标。NavigationIcon。

public class NavigationPageRenderer : Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer
{
    public AppCompToolbar toolbar;
    public Activity context;

    protected override Task<bool> OnPushAsync(Page view, bool animated)
    {
        var retVal = base.OnPushAsync(view, animated);

        context = (Activity)Forms.Context;
        toolbar = context.FindViewById<AppCompToolbar>(Droid.Resource.Id.toolbar);

        if (toolbar != null)
        {
            if (toolbar.NavigationIcon != null)
            {
                if (toolbar.NavigationIcon is DrawerArrowDrawable navigationIcon)
                {
                    // Code goes here?
                    toolbar.NavigationIcon = Android.Support.V7.Content.Res.AppCompatResources.GetDrawable(context, Resource.Drawable.back);
                    toolbar.Title = "Back";
                }

            }
        }

        return retVal;
    }
}

以下是您可以查看的示例:

https://github.com/hachi1030-Allen/XamarinCustomNavBar

答案 1 :(得分:0)

<NavigationPage.TitleView>将帮助您。这是一种XAML方法。

示例:

<NavigationPage.TitleView>
     <StackLayout>
     ....
     </StackLayout>
</NavigationPage.TitleView>

使用这种方法,您可以设置 HeightRequest WidthRequest ,将其放置在 StackLayout 中的任何元素以及任何其他想要设置的元素修改。

另外,请注意,如果您遇到图标大小问题,则有必要研究一下您的drawable /图标大小是否适合正确的分辨率。

相关问题