我正在尝试使用MonoTouch开发应用程序。对于某些屏幕,我在代码中创建UI。我有一个动态创建的RadioGroup
,通常有两到四个RadioElement
个(选项)。有时文本(动态)对于RadioElement
来说太长了,所以在iPhone上,文本最终会被......缩短。
我搜索了一下,发现没有关于如何创建多行RadioElement
的建议。我知道你可以创建一个MultilineElement
,如果你想要几行文字,但我如何组合这两个?我假设我必须继承RadioElement
并覆盖一些事件,但是哪个?是MonoTouch.UIKit.UITableViewCell GetCell (MonoTouch.UIKit.UITableView tv)
事件吗?
或者,您如何创建MultilineElement
,在按下/选中时会在其上显示复选标记?
或者我应该考虑完全不同?是否有其他组件可以更简单的方式解决这个问题?
答案 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
时应该这样做,尽管它似乎也可以在没有它的情况下工作。
如果有人有更好的建议,我很高兴! (是的,两个感叹号:))