Android - 所有屏幕尺寸的文字大小相同

时间:2016-08-10 18:03:46

标签: android textview

在我的Android应用中,我有以下布局:

printf( "size of s=%zu\n", sizeof s ); // C99 or later
printf( "size of s=%lu\n", (unsigned long) sizeof s ); /* C89 */

在我的Nexus 5中,如上图所示将文本大小设置为20sp,使文本占据CardView宽度的大约75%。问题是,当我在较小的手机上测试时,它会在文本中添加省略号。

我想要实现的是,在每个屏幕尺寸和分辨率下,文本将完全占据卡的75%。

那么,我怎样才能解决这个问题,创建多个比例文件夹(ldpi,mdpi,...)并调整每个文件夹的字体大小,通过代码计算百分比或任何其他解决方案?

谢谢。

4 个答案:

答案 0 :(得分:0)

获取特定设备上的卡片宽度并乘以.75,然后将文字大小设置为该值。

答案 1 :(得分:0)

如果您希望textview使用textsp 20%获得75%的cardview,则文本将溢出为多行。

android:maxLines="1"
android:singleLine="true"

删除这些属性没有必要,并允许多行的textview

答案 2 :(得分:0)

文字总是一样吗?如果是这样,解决方案非常简单。

int ratio = 15;
int width = difficultyCardView.getWidth();
diffNameTv.setTextSize(width/ratio);

调整比例,直到大小达到您想要的大小,然后无论屏幕大小如何,文本都会与卡片的相对大小相同。

答案 3 :(得分:0)

您要做的是创建响应式布局。为此,请在res目录中创建其他布局文件夹。在文件夹名称的末尾添加像素密度名称,使用短划线分隔文本“布局”和密度(例如layout-hdpi,layout-mhdpi,layout-xhdpi等)。在这些文件夹中,创建所需的布局对于每个密度。然后,您可以根据像素密度将textview调整为每种不同屏幕尺寸的75%。因此,如果20sp填充75%的hdpi布局,那么您可能需要增加mhdpi的文本大小以填充75%的卡。

Android会根据屏幕尺寸自动为特定设备选择正确的布局。