在我的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,...)并调整每个文件夹的字体大小,通过代码计算百分比或任何其他解决方案?
谢谢。
答案 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会根据屏幕尺寸自动为特定设备选择正确的布局。