【问题标题】:Set Activity title ellipse to middle?将活动标题椭圆设置为中间?
【发布时间】:2012-06-02 11:44:57
【问题描述】:

我有一个 Activity,它的标题不断变化,但有时它很长,最后会变成省略号。我可以将椭圆设置为中间吗?

【问题讨论】:

    标签: java android


    【解决方案1】:

    你可以这样做:

        final int actionBarTitle = Resources.getSystem().getIdentifier("action_bar_title", "id", "android");
        final TextView title = (TextView)getWindow().findViewById(actionBarTitle);
        if ( title != null ) {
            title.setEllipsize(TextUtils.TruncateAt.MIDDLE);
        }
    

    【讨论】:

    • 我在您的问题中没有看到 1.6。应该是一样的,但是id不一样,试试用hierarchyviewer找吧
    • 这也是一个 hack。它很可能会破裂。至少检查空值并捕获异常。
    • @xmenW.K."android.R.id.title" 在非操作栏版本中。
    【解决方案2】:
        ((TextView) ((FrameLayout) ((LinearLayout) ((ViewGroup) getWindow()
                .getDecorView()).getChildAt(0)).getChildAt(0)).getChildAt(0))
                .setEllipsize(TextUtils.TruncateAt.MIDDLE);
    

    android:set title bar in middle得到它

    【讨论】:

    • 这是一个黑客。它可能会破裂。
    • 我同意,它确实与 3.0+ 不同,但也适用于旧版本:)
    【解决方案3】:

    如果您使用工具栏,您可以在 settitle 之前添加此功能

      private void setToolbarTextEllipsizeInMiddle(Toolbar toolbar){
        try {
            toolbar.setTitle("'");
            for (int i = 0; i < toolbar.getChildCount(); i++) {
                View view = toolbar.getChildAt(i);
                if (view instanceof TextView) {
                    TextView tv = (TextView) view;
                    tv.setEllipsize(TextUtils.TruncateAt.MIDDLE);
                }
            }//end for i
            toolbar.setTitle("");
        } catch (Exception e) {
        }
    }
    

    【讨论】:

      【解决方案4】:

      尝试使用android:ellipsize

      请参阅 Android 开发者页面中的 android:ellipsize

      【讨论】:

      • 你不能在活动标题上使用它,可以吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多