您可以Xamarin.Forms
非常轻松地对库存控件进行子类化,以便对控件进行面向平台的小修改.
在上面的示例中,我创建了两个SearchBar子类,一个用于允许自定义图标,另一个用于删除图标,Xamarin.Android
渲染类似于:
protected override void OnElementChanged (ElementChangedEventArgs<SearchBar> e)
{
base.OnElementChanged (e);
if (Control != null) {
var searchView = Control;
searchView.Iconified = true;
searchView.SetIconifiedByDefault (false);
// (Resource.Id.search_mag_icon); is wrong / Xammie bug
int searchIconId = Context.Resources.GetIdentifier ("android:id/search_mag_icon", null, null);
var icon = searchView.FindViewById (searchIconId);
(icon as ImageView).SetImageResource (Resource.Drawable.icon);
}
Run Code Online (Sandbox Code Playgroud)
protected override void OnElementChanged (ElementChangedEventArgs<SearchBar> e)
{
base.OnElementChanged (e);
if (Control != null) {
var searchView = Control;
searchView.Iconified = true;
searchView.SetIconifiedByDefault (false);
// (Resource.Id.search_mag_icon); is wrong / Xammie bug
int searchIconId = Context.Resources.GetIdentifier ("android:id/search_mag_icon", null, null);
var icon = searchView.FindViewById (searchIconId);
icon.Visibility = Android.Views.ViewStates.Gone;
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
@SushiHangover的方法效果很好,但是一旦SearchView获得焦点,图标就会再次出现。为了解决这个问题,我将LayoutParameters用于图标:
if(Control!= null){
...
int searchIconId = Context.Resources.GetIdentifier ("android:id/search_mag_icon", null, null);
var icon = (ImageView)searchView.FindViewById (searchIconId);
icon.LayoutParameters = new LinearLayout.LayoutParams (0, 0);
...
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4612 次 |
最近记录: |