首页 文章

自动缩放TextView文本以适应界限 - 如何调用?

提问于
浏览
1

新手Java问题 - 在Auto Scaling Text视图的所有帖子中,没有人指出您实际使用提供的类的方式 . 它似乎是一个更好的解决方案是Chase的Auto Scale TextView Text to Fit within Bounds

有谁知道你如何使用它?例如:

String bigTextString = "This is a test!";

TextView t = (TextView)findViewById(R.id.big_text);
t.setTextSize(returnFontSize(bigTextString));
t.setText(bigTextString);

returnFontSize不存在,只是为了说明而显示 . AutoResizeTextView类在其自己的文件中正确设置 .


谢谢(忽略下面的简短评论,因为StackOverflow有一个不允许重新评论评论的错误,它也限制为512个字符) .

我一定还在遗漏一些东西 . 如果我只使用建议的两行,你在哪里传递文本字符串?我尝试了类似的东西,但它只是在运行时崩溃,这是有道理的 .

AutoResizeTextView t = new AutoResizeTextView(this); 
linearMain.addView(findViewById(R.id.big_text));

addView失败并出现“IllegalStateException:指定的子节点已经有父节点 . 你必须首先在子节点的父节点上调用removeView() . ”,这看起来很奇怪,因为我不想删除视图(我认为),而我看不出它如何知道字符串放在屏幕上 .

是否真的需要addView,因为它已在布局中定义 .

我只是想传递它的文字 . 例如:

TextView t = (TextView)findViewById(R.id.big_text);
t.setTextSize(textSize);
t.setTextColor(textColor);
t.setText(bigTextString);

这样运行,除了Android在屏幕上拟合文本的工作很差,这取决于“bigTextString”中的内容 .

1 回答

  • 0

    好吧,如果你有一个描述如何制作和修改对象的类,你需要做的就是用它的构造函数和方法来修改它 . 以下是您链接中的一个 .

    public FontFitTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    
        float size = this.getTextSize();
        if (size > MAX_TEXT_SIZE)
            setTextSize(MAX_TEXT_SIZE);
    }
    

    你调用你的活动 FontFitTextView textViewName = new FontFitTextView(context, attrs); 然后通过 layoutName.addView(textViewName); 将它添加到视图中这意味着你需要通过它的android:id找到你用于布局的视图,因为我假设你不想以编程方式构建整个布局 . 您也可以通过 <packagename.FontFitTextView /> 在xml中调用构造函数

    tl; dr - 使用构造函数

相关问题