Android缩放文字以适应

时间:2014-04-22 13:26:33

标签: java android textview

我有一个使用本地化的应用程序,在某些语言中,它对于它所拥有的空间来说很大,所以我正在做的是缩放它以适应,这是我的代码到目前为止:

if(Build.VERSION.SDK_INT >= 11.0){
        TypedValue tv = new TypedValue();
        getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true);
        actionBarWidth = getResources().getDimensionPixelSize(tv.resourceId);
    }

    View infoButton = findViewById(R.id.info_button);
    int infoWidth = infoButton.getMeasuredWidth();

    DisplayMetrics metrics = new DisplayMetrics();
    Display Screen = getWindowManager().getDefaultDisplay();
    Screen.getMetrics(metrics);
    int screenWidth = metrics.widthPixels;

    int titleWidth = screenWidth - infoWidth - actionBarWidth;



    TextView titleText = (TextView) findViewById(R.id.title_text);
    titleText.setText("hello hello hello hello hello hello");

    TextPaint paint = titleText.getPaint();
    Rect rect = new Rect();
    String text = String.valueOf(titleText.getText());
    int textLength = text.length();
    paint.getTextBounds(text, 0, textLength,rect);

    if(rect.width() > titleWidth){
        float size = titleText.getTextSize();
        float factor = activityHelper.getScreenMetrics();
        float product = size*factor;
        titleText.setTextSize(TypedValue.COMPLEX_UNIT_PX, product);
        size = titleText.getTextSize();
    }

所以这使得文本变得庞大,但我想要它做的是在文本内部完美地缩放文本,如何根据文本大小设置文本大小?

修改

我可以添加一个while循环,每次循环检查文本是否适合所需的空间时,文本会变小吗?

1 个答案:

答案 0 :(得分:0)

Android本身不支持(遗憾的是)。

请参阅该答案以获取更多帮助:Auto Scale TextView Text to Fit within Bounds