【问题标题】:Can I ellipsize a dialog title?我可以省略对话框标题吗?
【发布时间】:2010-08-04 14:35:26
【问题描述】:

我有一个作为 Theme.Dialog 运行的 Activity。我可以将其标题设置为“椭圆”样式吗?目前,文本正在使用 setText() 填充到 onCreate() 中。 TextView 上没有 this.setEllipsize() 。

或者,我唯一的选择是写a Custom Dialog 并在那里设置标题样式吗?在走这条路之前,我想知道这是否可能。

【问题讨论】:

  • 你能把标题传递给已经椭圆化的对话框吗?
  • 当然可以,但是我必须为各种 Android 屏幕计算对话框的宽度,不是吗?我计算了屏幕可以显示的最大字符数,然后将最后 3 个字符省略为点。

标签: android dialog title


【解决方案1】:

干净简单,无需任何自定义视图:

TextView tv = (TextView) dialog.findViewById(android.R.id.title);
tv.setEllipsize(TextUtils.TruncateAt.END);

【讨论】:

  • 刚刚在使用 Android 4.3 的 Nexus7 上运行的应用中使用了此代码。它有效,但有时我在对话框标题中的省略号后得到一些字符。这很可能是Issue 882 的另一种情况,#9 有一个解决方法:tv.setLines(1);tv.setHorizontallyScrolling(true); 也帮助了我。现在一切都像魅力一样运作。
【解决方案2】:

以下代码可帮助您省略文本视图...

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCustomTitle(GetDialogTitleView(this,R.string.TitleStr));

private static TextView GetDialogTitleView(Context mContext,int TitleResID)
    {

        TextView title = new TextView(mContext);
        title.setText(TitleResID);
        title.setBackgroundColor(Color.DKGRAY);
        title.setPadding(5, 5, 5,5);
        title.setGravity(Gravity.CENTER);
        title.setTextColor(Color.WHITE);
        TruncateAt ta = TruncateAt.MIDDLE;
        title.setEllipsize(ta);
        title.setTextSize(20);
        return title;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-13
    • 2014-08-17
    • 1970-01-01
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    相关资源
    最近更新 更多