我的活动中TextView
通常为visible
,但平板电脑设备为gone
。
我知道我可以为平板电脑创建一个新的布局文件,但这似乎有很多重复,所以我要做的是在我的(单个)布局文件中设置类似......
android:visibility="@string/my_textview_visibility"
...代表TextView
。然后,在我的字符串资源文件中,设置...
<string name="my_textview_visibility">gone</string>
(在 values / strings.xml 中)
...和...
<string name="my_textview_visibility">visible</string>
(在 values-sw720dp / strings.xml 中)
...隐藏平板电脑的TextView。
然而,当我尝试这个时,应用程序在尝试显示该活动时崩溃。
我是否需要使用常量值而不是上述字符串值 - 例如,
"visible"
- &gt; 0
"gone"
- &gt; 8
..如果是这样,在XML文件中添加/引用这些值的正确方法是什么?
还是有其他/更好的方法吗?
注意 - 我不想在我的Java代码中以编程方式显示/隐藏TextView
。
答案 0 :(得分:3)
您应该使用/values/integers/
代替:
<强>值/ integers.xml 强>
<integer name="my_textview_visibility">0</integer> <!-- 0 = View.VISIBLE -->
<强>值-sw720dp / integers.xml 强>
<integer name="my_textview_visibility">2</integer> <!-- 2 = View.GONE -->
然后这样调用:
android:visibility="@integer/my_textview_visibility"
答案 1 :(得分:3)
答案 2 :(得分:0)
正如您所说,执行此操作的最佳方法是为layout
创建一个特定的tablets
,其中TextView
将被隐藏。但是,可以使用xml boolean resources
:(作为res/values-sw600dp/
):
<resources>
<bool name="isTablet">true</bool>
</resources>
因为sw600dp
限定符仅对android 3.2以上的平台有效。如果您想确保此技术适用于所有平台(3.2之前),请在res/values-xlarge
文件夹中创建相同的文件:
<resources>
<bool name="isTablet">true</bool>
</resources>
然后,在&#34;标准&#34;值文件(如res/values/
),您将布尔值设置为false:
<resources>
<bool name="isTablet">false</bool>
</resources>
然后在您的活动中,您可以获取此值并检查您是否在平板电脑尺寸设备中运行:
boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
if (tabletSize) {
// do something
} else {
// do something else
}