【发布时间】:2020-11-20 17:01:38
【问题描述】:
我正在尝试仅使用共享代码(没有本机项目代码,因此没有渲染器也没有效果)来制作内容按钮。 为此,我创建了一个带有经典按钮的 ContentView,如下所示: (为简单起见,我只添加了一个标签作为内容)
<Grid>
<Button x:Name="button"
Released="button_Released"/>
<Label x:Name="text"
VerticalOptions="Center"
HorizontalOptions="Center"
InputTransparent="True"/>
</Grid>
我还创建了一个这样的文本可绑定属性:
public static readonly BindableProperty TextProperty = BindableProperty.Create(nameof(Text), typeof(string), typeof(ContentButton), propertyChanged: TextChanged);
public string Text
{
get => (string)GetValue(TextProperty);
set => SetValue(TextProperty, value);
}
private static void TextChanged(object sender, object oldValue, object newValue)
{
var button = sender as ContentButton;
button.text.Text = newValue as string;
}
接下来,我使用我的 ContentButton 如下:
<controls:ContentButton Text="Some text"/>
按钮显示正确。但是当我点击它时,它似乎从我的标签前面经过,从那一刻起,文本不再可见。 我发现解决此问题的唯一解决方法是将此代码放在按钮的已释放事件中:
await Task.Delay(200);
text.IsVisible = false;
text.IsVisible = true;
但显然这不是一个合适的解决方案。
此问题出现在带有 Xamarin Forms 4.8.0.1687 的 Android 9 上
提前致谢
【问题讨论】:
-
点击Button时好像Button覆盖了Label,为什么不在Button中添加Text呢?
-
嗨,因为我已经为示例进行了简化,但我的最终想法是放置文本以外的内容。所以我不能使用 Button 的 Text 属性。而且我还想保持简单,并利用 Button 控件已经存在的所有逻辑,尤其是视觉逻辑。所以我不需要通过渲染器或效果器
-
我找到了一种解决方法,将按钮背景更改为透明,然后您始终可以看到文字。
标签: android xamarin button xamarin.forms xamarin.android