Android 根据文本视图的大小更改文本视图的文本

Android 根据文本视图的大小更改文本视图的文本,android,resize,textview,Android,Resize,Textview,是否有任何简单的方法来更改TextView的文本,以使其适合视图的大小?请注意,我不希望截断文本或放置省略号,我希望设置不同的文本 例如,如果视图太小(其中两个字符串都是资源),我想使用Exp:而不是Experience: 我知道我可以“避免”为每个可能的屏幕大小编写一个定制的.xml布局文件,但如果可能的话,我希望避免这种情况。我已经使用了一些不同的布局文件,但仅适用于布局需要进行一些根本性更改以适应屏幕大小的情况。此外,在某些情况下,我希望能够动态设置TextView的文本,而这无法通过xm

是否有任何简单的方法来更改
TextView
的文本,以使其适合视图的大小?请注意,我不希望截断文本或放置省略号,我希望设置不同的文本

例如,如果视图太小(其中两个字符串都是资源),我想使用
Exp:
而不是
Experience:

我知道我可以“避免”为每个可能的屏幕大小编写一个定制的
.xml
布局文件,但如果可能的话,我希望避免这种情况。我已经使用了一些不同的布局文件,但仅适用于布局需要进行一些根本性更改以适应屏幕大小的情况。此外,在某些情况下,我希望能够动态设置
TextView
的文本,而这无法通过xml布局文件完成

我只对单行
TextView
s和宽度感兴趣


我能想到的唯一方法是使用一个自定义的
TextView
子类,如果原始文本不适合,该子类将使用回退文本,但我想知道是否有更简单的解决方案,以及最终如何可靠地计算某个文本是否适合
TextView
大小。

您可以尝试以下方法:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int screenWidth = size.x;

if( textView.getWidth() > screenWidth ) {
    textView.setText("Exp:");
} else {
    textView.setText("Experience:");
}

我不确定您是否需要使用getWidth()或getMeasuredWidth(),因此如果它不起作用,请尝试第二个选项。

如果
TextView
在复杂的布局中会怎么样?然后您可以尝试TextView.getParent.getWidth(),而不是获取屏幕宽度。我认为这不起作用。如果父项是包含其他项的水平
BoxLayout
,该怎么办
getParent().getWidth()
返回布局的总宽度,但
TextView
仅使用部分宽度。另外,如何判断给定的宽度是否足以容纳某些文本?在我的示例中,我如何知道
x
像素足以显示
体验:
?如果您将布局宽度设置为包裹内容的TextView,则TextView.getWidth()将返回px中足以显示“体验:”的最小宽度。而这个BoxLayout的东西,我并没有说它是一个通用的解决方案,可以在任何可能的情况下工作。这只是一个概念,我不知道你的代码中到底有什么。