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的东西,我并没有说它是一个通用的解决方案,可以在任何可能的情况下工作。这只是一个概念,我不知道你的代码中到底有什么。