- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 xamarin 表单制作跨平台应用程序(Android、WinPhone)。我需要创建一个圆形文本框,就像 Whatsapp 聊天窗口中的输入框一样。文本框控件在 Xamarin Forms 中称为编辑器。
有谁知道如何创建圆角编辑器?我已经尝试在两个平台上实现渲染器,但没有找到我要找的东西。
点击时看起来像这样:
出于某种原因,背景形状是矩形,如果它只出现在编辑器的边框中,我会更喜欢。有什么想法吗?
最佳答案
Does anyone know how to create a rounded corner editor? I've tried implementing a renderer in both platforms but didn't find what I was looking for.
你的方向是正确的。您需要为每个平台创建自定义渲染。请按照以下步骤在两个平台上创建圆形编辑器:
PCL 中的自定义控件 RoundedEditor
:
public class RoundedEditor:Editor
{
//empty or define your custom fields
}
对于 Android 平台(在 YourProject.Android
中):
在 Resources/Drawable/
中创建一个 xml RoundedEditText.xml
:
<?xml version="1.0" encoding="utf-8" ?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp" >
<!--solid defines the fill color of the Editor-->
<solid android:color="#FFFFFF"/>
<!--stroke defines the border color-->
<stroke android:width="2dp" android:color="#FF0000" />
<!--the corner radius-->
<corners
android:bottomRightRadius="15dp"
android:bottomLeftRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
</shape>
像这样创建自定义渲染器:
[assembly:ExportRenderer(typeof(RoundedEditor),
typeof(RoundedEditorRenderer))]
namespace RoundedEditorDemo.Droid
{
public class RoundedEditorRenderer:EditorRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Editor> e)
{
base.OnElementChanged(e);
if (Control != null)
{
Control.Background = Xamarin.Forms.Forms.Context.GetDrawable(Resource.Drawable.RoundedEditText);
}
}
}
}
对于 Windows 平台(在 YourProject.UWP
中):
通过右键单击您的项目->添加->新项目->资源字典->重命名为 RoundedEditorRes.xaml
创建一个 ResourceDictionary
文件并添加满TextBox
default style到资源字典。
编辑 Border
元素(添加 CornerRadius="15"
并将 BorderThickness="{TemplateBinding BorderThickness}"
更改为 BorderThickness="2"
) 文本框的默认样式,并为该样式添加一个键:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:RoundedEditorDemo.UWP">
...
<Border
CornerRadius="15"
BorderThickness="2"
x:Name="BorderElement"
BorderBrush="{TemplateBinding BorderBrush}"
Background="{TemplateBinding Background}"
Grid.ColumnSpan="2" Grid.Row="1" Grid.RowSpan="1"/>
...
</ResourceDictionary>
创建自定义渲染器:
[assembly: ExportRenderer(typeof(RoundedEditor),
typeof(RoundedEditorRenderer))]
namespace RoundedEditorDemo.UWP
{
public class RoundedEditorRenderer:EditorRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Editor> e)
{
base.OnElementChanged(e);
if (Control != null)
{
Windows.UI.Xaml.ResourceDictionary dic = new Windows.UI.Xaml.ResourceDictionary();
dic.Source = new Uri("ms-appx:///RoundedEditorRes.xaml");
Control.Style = dic["RoundedEditorStyle"] as Windows.UI.Xaml.Style;
}
}
}
}
这是完整的演示:RoundedEditorDemo .
更新:
我无法重现背景问题,我使用的是 Windows 更新 15063。所以我认为如果您更新到最新更新,它会得到修复。
对于 Android 部分:请注意我使用的是 Xamarin.Forms.Forms.Context.GetDrawable
,它由 Xamarin.Forms 提供。并且请尝试在您的计算机上运行我的完整演示以检查您是否收到错误。
如果你仍然得到错误。能否请您指出,您在哪个地方得到了错误?
关于c# - 如何在 Xamarin Forms 中制作 Rounded Editor 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44995914/
Stata 有一个 round() 函数。人们可以选择舍入到的单位。我想使用round(ArbitraryValue, 0.01)将任意浮点值四舍五入到小数点后两位。 Stata 的 display
四舍五入看起来很容易,但我不知道如何四舍五入。 使用这段代码: def __str__(self): return'x = %.2f,y = %.2f'%(self.x,self.y)
我发现一个很奇怪的问题,问题是PHP和Javascript中的ROUND方法计算结果不一样!? 请看下面的例子: PHP echo round(175.5); // 176 echo round(-1
让我们看一下那句令人震惊的round语句: >>> round(2.675, 2) 2.67 我知道为什么回合“失败”;这是因为 2.675 的二进制表示: >>> import decimal >>
这个问题已经有答案了: 奥 git _a (1 个回答) 已关闭 7 年前。 我发现 VBA Round 函数返回错误的结果。我找到了一个可行的替代方案,即使用 Application.Round 代
所以我正在运行 MySQL 5.1.4 版,我试图通过四舍五入的值来选择 distinct,它工作得很好,除了它把数字四舍五入,比如 12.5 到 12 而不是 13。我试过的列都是double型的。
guess = input("H or T?") def game(): num_rounds() for p1 in range(0, 2): p1 = ("H",
我了解到建议使用 BigDecimal 而不是 Float,但这要么是一个错误,要么突出了 Float 的深奥本质.似乎 Float#round(2) 对“1.015”、“1.025”和“1.035”
C# 中的 Math.Round 和 decimal.Round 函数有什么区别? 最佳答案 没有区别。 Math.Round(decimal)源代码: public static Decimal R
我注意到 Math.Round()比 Decimal.Round() 更灵活,因为它能够处理 Decimal.Round() 可以处理的所有事情,而且在给定 double 输入的情况下也可以处理同样的
我在生成的 SVG 中看到一个奇怪的渲染问题。我已经把它缩小到一个小的可重复的案例。 这呈现为 (至少在 Safari、Mac Chrome 或 Mac Firefox 中查看时)。我希望
我有以下 SQL Server 语句,我想将其转换为 c#。我知道 C# 中有一个叫做 Math.Round 的东西。我已经尝试过,但 C# 返回相同的结果 c# 返回一个 int。有关详细信息,请查
我正在使用 C# 和 SQL 中的 ROUND 函数,令人惊讶的是两者都产生了不同的结果。 在 SQL 中:ROUND(1250.00, -2) = 1300 在 C# 中 ROUND 1250 ro
我正在尝试使用 SSE(1,2,3) 指令创建类似于 std::round() 的函数,但某些值和/或逻辑运算符存在一些问题。这是我的代码: #include #include #include
jq 中的 round 函数不起作用。 $ jq '10.01 | round' jq: error: round/0 is not defined at , line 1: 10.01 | roun
我试图弄清楚如何使用 VBA 更改 Excel 中圆角矩形形状的圆度。 我首先创建圆角矩形,但此时我不确定下一步要做什么。 Set roundedRec = ws.Shapes.AddShape(ms
当我的代码运行时,我进入 2 人模式并调用函数 rounda 和 roundb,但由于某种原因它们没有响应。其他一切都正常,但我不知道出了什么问题。预先感谢您提供任何可能的建议。我的代码如下。我调用函
我从阅读中知道this Stackoverflow question编译器将查看您的数字,确定中点是偶数还是奇数,然后返回偶数。示例数字是 2.5,四舍五入为 3。我尝试了自己的小实验以查看会发生什么
这个问题在这里已经有了答案: There's a shadow on my button (3 个答案) 关闭 9 年前。 顺便说一句。它可能看起来像是关于按钮阴影问题的重复问题,但它们具有单调背景
据我了解,2.675 和 numpy.float64(2.675) 都是相同的数字。然而,round(2.675, 2) 给出 2.67,而 round(np.float64(2.675), 2) 给
我是一名优秀的程序员,十分优秀!