MonoTouch.Dialog:如何制作RadioElement多线?

时间:2013-09-29 10:06:12

标签: xamarin.ios multiline monotouch.dialog

我正在尝试使用MonoTouch开发应用程序。对于某些屏幕,我在代码中创建UI。我有一个动态创建的RadioGroup,通常有两到四个RadioElement个(选项)。有时文本(动态)对于RadioElement来说太长了,所以在iPhone上,文本最终会被......缩短。

我搜索了一下,发现没有关于如何创建多行RadioElement的建议。我知道你可以创建一个MultilineElement,如果你想要几行文字,但我如何组合这两个?我假设我必须继承RadioElement并覆盖一些事件,但是哪个?是MonoTouch.UIKit.UITableViewCell GetCell (MonoTouch.UIKit.UITableView tv)事件吗?

或者,您如何创建MultilineElement,在按下/选中时会在其上显示复选标记?

或者我应该考虑完全不同?是否有其他组件可以更简单的方式解决这个问题?

1 个答案:

答案 0 :(得分:0)

这是一种解决方案(至少它解决了我的问题):

public class MultilineRadioElement : RadioElement
{
    public MultilineRadioElement (string caption, string group) 
      : base(caption, group) { }

    public override MonoTouch.UIKit.UITableViewCell GetCell 
      (MonoTouch.UIKit.UITableView tv)
    {
        var cell = base.GetCell (tv);
        cell.TextLabel.Lines = 2;
        return cell;
    }
}

当我现在使用MultilineRadioElement代替RadioElement时,文字显示在两行上。对我来说两条线就足够了。如果文本更长,并且您仍希望将其放在RadioElement的当前大小内,则可能需要计算文本的大小,例如将cell.TextLabel.Font中的字体设置为更多适当的字体。

我不知道如何让RadioElement本身变得更大,所以这是我最好的建议。

顺便说一下,你应该也可以添加

protected override MonoTouch.Foundation.NSString CellKey 
{
    get { return base.CellKey; }
}

MultilineRadioElement因为我的Xamarin Studio中的intellisense建议在覆盖GetCell时应该这样做,尽管它似乎也可以在没有它的情况下工作。

如果有人有更好的建议,我很高兴! (是的,两个感叹号:))