2

StyledMultilineElementから派生した独自のカスタム要素があります。

public class SubmenuElement : StyledMultilineElement
{

    public static UITableViewCellStyle DefaultCellStyle { get; set; }

    public static UITableViewCellAccessory DefaultCellAccessory { get; set; }
    public static UILineBreakMode DefaultDetailTextLineBreakMode { get; set; }

    public UILineBreakMode DetailTextLineBreakMode { get; set; }
    public int? DetailLines { get; set; }
    public bool? DetailTextResizesFontToFitWidth { get; set; }


    static SubmenuElement()
    {
        // Set the defaults
        DefaultCellStyle = UITableViewCellStyle.Default;
        DefaultCellAccessory = UITableViewCellAccessory.DisclosureIndicator;
        DefaultDetailTextLineBreakMode = UILineBreakMode.TailTruncation;
    }

    ...


    public override UITableViewCell GetCell (UITableView tv)
    {
        var cell = base.GetCell (tv);
        if (cell.DetailTextLabel != null && !string.IsNullOrWhiteSpace(cell.DetailTextLabel.Text))
        {
            if (DetailLines.HasValue)
                cell.DetailTextLabel.Lines = DetailLines.Value;
            cell.DetailTextLabel.LineBreakMode = DetailTextLineBreakMode;
            if (DetailTextResizesFontToFitWidth.HasValue)
                cell.DetailTextLabel.AdjustsFontSizeToFitWidth = DetailTextResizesFontToFitWidth.Value;
        }
        return cell;
    }

}

DetailTextにLineBreakModeを設定しても効果がないようです。

public class PeopleView
{

    ....



    void CreateUI()
    {
        var root = new RootElement(Header)
        {
            GroupAndSortResults(people, CurrentState.PeopleDirectoryOptions.GroupAndSort)
                .Select (g => new Section(g.Key)
                {
                    g.Select<PeopleListItem, SubmenuElement> (p => new SubmenuElement(
                        GetName (p),
                        p.TypeGradeSchool, 
                        () => GoToPersonProfile(p.ID),
                        null,
                        UITableViewCellAccessory.None,
                        UITableViewCellStyle.Subtitle
                    )
                {
                    ImageUri = PersonAvatarImage.GetAvatar (p.ID),
                    OnImageLoaded = WhenImageLoaded,
                    DetailTextLineBreakMode = UILineBreakMode.MiddleTruncation,
                    DetailTextResizesFontToFitWidth = true,
                    DetailLines = 0
                }).ToArray ()
                }).ToArray()
        };
        this.Root = root;
        this.NavigationItem.RightBarButtonItems = new UIBarButtonItem[] 
        {
            new UIBarButtonItem(UIBarButtonSystemItem.Organize, new EventHandler(WhenOrganizerTapped)),
            new UIBarButtonItem(UIBarButtonSystemItem.Refresh, new EventHandler(WhenRefreshTapped))
        };
    }

}

詳細行の切り捨てが機能しない理由について何かアイデアはありますか?他のすべては正しく機能します。私のデフォルトはテールトランケーションですが、この特定のビューでは、ミドルトランケーションが必要でした。切り捨てスタイルは機能しません。

4

1 に答える 1

4

私はそれをすぐに理解しました...DetailLinesプロパティが1に設定されている場合、切り捨てられます。AdjustsFontSizeToFitWidthその行番号が1に設定されていない限り、切り捨てまたはテキストのサイズ変更は機能しません。

SOでこれと同様の質問がある場合は、賛成されない限り、この質問を削除します(他の誰かを助けます)。

于 2012-05-08T15:22:32.130 に答える