带有圆角 xamarin 表单的自定义搜索栏 android
Custom search bar with rounded corner xamarin forms android
带圆角的自定义 searchBar 渲染器:iOS
protected override void OnElementChanged(ElementChangedEventArgs<SearchBar> e)
{
base.OnElementChanged(e);
var searchbar = (UISearchBar)Control;
if (e.NewElement != null)
{
searchbar.Layer.CornerRadius = 20;
searchbar.Layer.BorderWidth =14;
searchbar.Layer.BorderColor = UIColor.FromRGB(240,240,240).CGColor;
}
}
自定义 SearchBar 渲染器:Android ?
我需要做的和我为 ios 做的一样,定制圆角搜索栏和其他一些定制,对于 android 我没有得到足够的信息来解决这个问题。任何人都可以提供一些说明或想法。
提前致谢。
在您的 SearchBarRenderer
子类中分配 Android SearchView
自定义 shape 可绘制对象:
class CustomSearchBar : SearchBarRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<SearchBar> e)
{
base.OnElementChanged(e);
if (Control != null)
Control.Background = ContextCompat.GetDrawable(Forms.Context, Resource.Drawable.custom_search_view);
}
}
在可绘制对象中,根据您的要求对其进行自定义:
<?xml version="1.0" encoding="UTF-8" ?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="10dp"
android:shape="rectangle" >
<corners android:radius="10dp" />
<solid android:color="#baf4ed" />
<stroke
android:width="5.0dp"
android:color="#800000" />
</shape>
有关可绘制对象的更多信息,请查看 Android 文档:
回复:https://developer.android.com/guide/topics/resources/drawable-resource.html#Shape
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape=["rectangle" | "oval" | "line" | "ring"] >
<corners
android:radius="integer"
android:topLeftRadius="integer"
android:topRightRadius="integer"
android:bottomLeftRadius="integer"
android:bottomRightRadius="integer" />
<gradient
android:angle="integer"
android:centerX="float"
android:centerY="float"
android:centerColor="integer"
android:endColor="color"
android:gradientRadius="integer"
android:startColor="color"
android:type=["linear" | "radial" | "sweep"]
android:useLevel=["true" | "false"] />
<padding
android:left="integer"
android:top="integer"
android:right="integer"
android:bottom="integer" />
<size
android:width="integer"
android:height="integer" />
<solid
android:color="color" />
<stroke
android:width="integer"
android:color="color"
android:dashWidth="integer"
android:dashGap="integer" />
</shape>
不太确定您的确切要求,但简单地用一个框架包围搜索栏怎么样?
<Frame Padding="0" Margin="0" BackgroundColor="White" HasShadow="False" BorderColor="Black" CornerRadius="15" HeightRequest="30">
<SearchBar BackgroundColor="Transparent"/>
</Frame>
searchbar inside trimmed frame image
带圆角的自定义 searchBar 渲染器:iOS
protected override void OnElementChanged(ElementChangedEventArgs<SearchBar> e)
{
base.OnElementChanged(e);
var searchbar = (UISearchBar)Control;
if (e.NewElement != null)
{
searchbar.Layer.CornerRadius = 20;
searchbar.Layer.BorderWidth =14;
searchbar.Layer.BorderColor = UIColor.FromRGB(240,240,240).CGColor;
}
}
自定义 SearchBar 渲染器:Android ?
我需要做的和我为 ios 做的一样,定制圆角搜索栏和其他一些定制,对于 android 我没有得到足够的信息来解决这个问题。任何人都可以提供一些说明或想法。
提前致谢。
在您的 SearchBarRenderer
子类中分配 Android SearchView
自定义 shape 可绘制对象:
class CustomSearchBar : SearchBarRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<SearchBar> e)
{
base.OnElementChanged(e);
if (Control != null)
Control.Background = ContextCompat.GetDrawable(Forms.Context, Resource.Drawable.custom_search_view);
}
}
在可绘制对象中,根据您的要求对其进行自定义:
<?xml version="1.0" encoding="UTF-8" ?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="10dp"
android:shape="rectangle" >
<corners android:radius="10dp" />
<solid android:color="#baf4ed" />
<stroke
android:width="5.0dp"
android:color="#800000" />
</shape>
有关可绘制对象的更多信息,请查看 Android 文档:
回复:https://developer.android.com/guide/topics/resources/drawable-resource.html#Shape
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape=["rectangle" | "oval" | "line" | "ring"] >
<corners
android:radius="integer"
android:topLeftRadius="integer"
android:topRightRadius="integer"
android:bottomLeftRadius="integer"
android:bottomRightRadius="integer" />
<gradient
android:angle="integer"
android:centerX="float"
android:centerY="float"
android:centerColor="integer"
android:endColor="color"
android:gradientRadius="integer"
android:startColor="color"
android:type=["linear" | "radial" | "sweep"]
android:useLevel=["true" | "false"] />
<padding
android:left="integer"
android:top="integer"
android:right="integer"
android:bottom="integer" />
<size
android:width="integer"
android:height="integer" />
<solid
android:color="color" />
<stroke
android:width="integer"
android:color="color"
android:dashWidth="integer"
android:dashGap="integer" />
</shape>
不太确定您的确切要求,但简单地用一个框架包围搜索栏怎么样?
<Frame Padding="0" Margin="0" BackgroundColor="White" HasShadow="False" BorderColor="Black" CornerRadius="15" HeightRequest="30">
<SearchBar BackgroundColor="Transparent"/>
</Frame>
searchbar inside trimmed frame image