在单选按钮控件中如何实现单选框之前的Text?

时间:2019-01-02 09:07:45

标签: xamarin xamarin.forms

我有什么

enter image description here

我想实现以下目标:

enter image description here

这是我用来创建单选按钮现有控件的参考链接:https://github.com/kirtisagar/XamarinFormsRadioButtonXAML

.Xaml页面:

<radio:BindableRadioGroup
                Spacing="10"
                x:Name="DeviceConditionRadio"
                ItemsSource="{Binding DeviceConditionList}"/>

.CS页面:

在这里我添加了广播的项目来源:

DeviceConditionList is a List<string>()

 DeviceConditionList.Add("This device works well");
 DeviceConditionList.Add("This device is not working properly");

如何获得这种设计? 任何对此的帮助表示赞赏! 谢谢。

1 个答案:

答案 0 :(得分:1)

在共享链接中,默认样式为Title右和Image左。该项目基于Custom渲染器进行。您可以在此处找到渲染器。 enter image description here 因此您可以通过渲染器修改此样式。在共享项目中,请不要自定义RadioButton 在Android中使用Button,在IOS中使用xml。然后您需要在每一个中自定义。

Android :您可以修改RadioButton来交换 <RadioButton android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:button="@null"//set null android:checked="true" android:drawableRight="@android:drawable/btn_radio"//reset the image android:paddingLeft="10dp" android:text="RadioButton" /> 的标题和图像,如下所示:

android:button="@null"

android:drawableRight="@android:drawable/btn_radio":此语句隐藏了原始系统的RadioButton图标。 CGFloat imageWidth = jumpBtn.imageView.bounds.size.width; CGFloat labelWidth = jumpBtn.titleLabel.bounds.size.width; jumpBtn.imageEdgeInsets = UIEdgeInsetsMake(0, labelWidth, 0, -labelWidth); jumpBtn.titleEdgeInsets = UIEdgeInsetsMake(0, -imageWidth, 0, imageWidth); :将系统随附的btn_radio图标添加到原始图标的右侧。我认为RadioButton包装在btn_radio图标上。

IOS :只需将Uibutton扩展到自定义按钮,并进行如下修改:

li {
  text-indent: -10px;
}

titleEdgeInsets属性和imageEdgeInsets属性仅在绘制按钮时用于调整图像和标签位置属性,而不会影响按钮本身的大小。

如果图像在右侧,标签在左侧,则图像的左侧从按钮的左侧移至labelWidth的右侧,图像的右侧移至在标签左侧的labelWidth右边。