如何在运行时设置 textview 位置常量?
Posted
技术标签:
【中文标题】如何在运行时设置 textview 位置常量?【英文标题】:How to set textview position constant in runtime? 【发布时间】:2012-10-27 19:43:45 【问题描述】:我正在尝试显示一些在运行时可见的文本视图。 这是我的代码:
for (int i=0; i<arrBool.length; i++)
arrBool[i] = r.nextBoolean();
if(arrBool[i]==true)
textView[i].setVisibility(View.VISIBLE);
当我运行应用程序时,文本视图应该随机可见。它正在工作,但我的问题是我已经设置了这些文本视图的布局。当我运行 android 应用程序时,可见的文本视图会转到左上角并丢失布局位置。
如何处理?
【问题讨论】:
您使用的是什么布局? linearLayout 可能会导致它。 【参考方案1】:将视图的开始可见性参数更改为View.INVISIBLE
它将在布局中占据自己的位置,并防止其他视图占据这些位置,这是View.GONE
的正常行为
【讨论】:
但我希望这些文本视图根据布尔数组值可见。如果 textview[1] 为真,那么只有它会显示 textview,否则不会。我的问题是当我这样做时,它只会改变 x,y 位置并从左上角开始。 如何指定TextView
s 的数量。它是动态变化还是恒定值?
它是恒定的。有6个文本视图。它有根据背景图像设置的布局。当它运行时,我怎样才能保持这些布局不变。
每个文本视图都是单独指定的。我对每一个都有特定的布局。
可以截图吗?【参考方案2】:
为 teoREtik 解决方案添加更多内容。
在你的布局中不要指定 android:visible 属性。
for (int i=0; i<arrBool.length; i++)
arrBool[i] = r.nextBoolean();
if(arrBool[i]==true)
textView[i].setVisibility(View.VISIBLE);
else
textView[i].setVisibility(View.INVISIBLE);
【讨论】:
【参考方案3】:我认为使用 FOR 循环不会帮助您在每次打开时随机显示可见文本视图。你为什么不直接使用整数(0 代表假,1 代表真)和一个 Random 像这样:
Random rnd = new Random(1); // --> This will randomize numbers up to one;
int enable = rnd.nextInt(); // --> Get the random value from 0 to 1
if(enable == 1) // --> If visibility of the text field is enabled everytime you opened the app...
textView.setVisibility(View.VISIBLE);
else
textView[i].setVisibility(View.INVISIBLE);
您可以通过访问“How can I generate random number in specific range in Android?”主题中的此示例来修改更多并试验整数值的随机化器。检查所有可能的答案。不要介意绿色复选标记,并通过调查其 cmets 来关注这些已回答的代码。我确信所有这些关于“随机”主题的答案,我给你的链接,都保证有效。
关于布局,我建议不要使用相对布局,而是使用线性布局,因为使用线性布局会按比例保持在原始位置,因为相对布局是取决于坐标的屏幕分辨率。还可以尝试练习操纵 res 文件夹下的字符串值尺寸,以在不同的屏幕分辨率(从 HVGA 到 WVGA)中保持文本的大小成比例。查看“Different font sizes for different screen sizes”了解有关文本大小比例的更多详细信息。
【讨论】:
以上是关于如何在运行时设置 textview 位置常量?的主要内容,如果未能解决你的问题,请参考以下文章
如何在运行时检查Android中Edittext / TextView的textallcaps是true / false?