如何减小Xamarin形式的占位符的字体大小?

时间:2018-11-30 11:01:28

标签: xamarin xamarin.forms placeholder searchbar

我有一个UI,占位符文本适合搜索栏。这是我需要的用户界面。

这是我的用户界面

这是我的自定义渲染器代码

[assembly: ExportRenderer(typeof(searchTab), typeof(StyledSearchBarRenderer))]
namespace RestaurantApp.Droid.Renderers
{
#pragma warning disable CS0618 // Type or member is obsolete
    class StyledSearchBarRenderer : SearchBarRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<SearchBar> e)
        {
            base.OnElementChanged(e);
            if (Control != null)
            {
                var color = global::Xamarin.Forms.Color.LightGray;

                var searchView = Control as SearchView;

                int searchPlateId = searchView.Context.Resources.GetIdentifier("android:id/search_plate", null, null);
                Android.Views.View searchPlateView = searchView.FindViewById(searchPlateId);
                searchPlateView.SetBackgroundColor(Android.Graphics.Color.Transparent);

                int searchIconId = Context.Resources.GetIdentifier("android:id/search_mag_icon", null, null);
                ImageView searchViewIcon = (ImageView)searchView.FindViewById<ImageView>(searchIconId);
                searchViewIcon.SetImageDrawable(null);

            }
        }
    }
#pragma warning restore CS0618 // Type or member is obsolete
}

这是我的XAML代码

 <Frame CornerRadius="10" Padding="0" OutlineColor="DarkGray" HasShadow="True" HorizontalOptions="Fill"  Margin="10,0,10,0" VerticalOptions="Center">
                <local:searchTab x:Name="searchBar"  Placeholder="Please search for a vendor or product name" PlaceholderColor="Black" TextColor="Black" HorizontalOptions="FillAndExpand" VerticalOptions="Center" />

            </Frame>

我不知道该如何解决。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

要更改HintText中的SearchView,我们需要找到EditText中的SearchView

var textView = (searchView.FindViewById(textViewId) as EditText);

现在,在获取SearchView的{​​{1}}的实例之后,我们可以设置EditText,我们可以将textViewSetBackgroundColor等所有类型的属性设置为一些。

因此,您用于更改SetHintTextColor(占位符)的代码如下

HintText

注意:当我们同时更改var textView = (searchView.FindViewById(textViewId) as EditText); textView.SetTextSize(12); 提示大小时。

答案 1 :(得分:0)

首先要了解的是,用户的屏幕尺寸会根据他们使用的设备而有所不同。将字体大小设置为绝对值会使它过于复杂。

Apple's HIG for the SearchBar的指导方针简洁明了,应该可以帮助您使用对您的应用有利的UI(即使仅针对Android)。在您的示例中,您想显示文本Please search for a product vendor or name。根据每条UI指南,这都是说明。搜索栏占位符必须为提示,例如 Search Product Vendor Product或供应商名称(列表继续显示)。

您所拥有的文本应在搜索栏上方显示为标签,以便用户知道这是他们必须遵循的说明。然后,在搜索栏中,您将为搜索栏显示一个简短的占位符(上面的示例)。实际上,您可以通过在标签中添加说明来改进UI,但可以使用示例搜索字符串作为占位符(例如: Apple iPhone ),以便用户获得编写示例的示例

或者,您可以删除“请输入...”,而只需将搜索栏占位符作为产品/供应商名称。用户仍然会知道按产品或供应商名称进行搜索。

执行上述操作将避免创建不必要的复杂自定义渲染器。