2010-08-04 102 views
2

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

或者,是我唯一的选择a Custom Dialog并在那里设置标题样式?我想知道如果这是可能的,然后沿着这条道路前进。

+0

你能否通过标题的对话框已经ellipsized? – 2010-08-04 14:57:05

+0

当然,但我不得不做一些计算各种Android屏幕对话框的宽度,不是吗? 我计算屏幕可以显示的最大字符数,然后将最后3个字符椭圆化为点。 – GJTorikian 2010-08-04 22:04:41

回答

1

下面的代码帮你ellipsize TextView的...

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; 
    } 
4

清洁&容易,没有任何自定义视图:

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

刚刚在运行Android 4.3的Nexus7上运行的应用程序中使用此代码。它的工作原理,但有时我会在对话标题中的省略号后找到一些字符。这很可能是[问题882](https://code.google.com/p/android/issues/detail?id=882)的另一种情况,#9有一个解决方法:'tv.setLines(1); tv.setHorizo​​ntalScrolling(true);'帮助我在这里。现在一切都像一个魅力。 – Nantoka 2013-08-18 13:54:01

相关问题