我有一个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>
我不知道该如何解决。有什么建议吗?
答案 0 :(得分:1)
要更改HintText
中的SearchView
,我们需要找到EditText
中的SearchView
。
var textView = (searchView.FindViewById(textViewId) as EditText);
现在,在获取SearchView
的{{1}}的实例之后,我们可以设置EditText
,我们可以将textView
,SetBackgroundColor
等所有类型的属性设置为一些。
因此,您用于更改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 ),以便用户获得编写示例的示例
或者,您可以删除“请输入...”,而只需将搜索栏占位符作为产品/供应商名称。用户仍然会知道按产品或供应商名称进行搜索。
执行上述操作将避免创建不必要的复杂自定义渲染器。