Android - 如何根据设备设置 xml 中的可见性?

ban*_*ing 5 xml android android-layout android-view android-resources

TextView我的活动中应该有一个visible正常的活动,但gone对于平板电脑设备而言。

我知道我可以为平板电脑创建一个新的布局文件,但这似乎有很多重复,所以我想做的是在我的(单个)布局文件中设置类似...

android:visibility="@string/my_textview_visibility"

...为了TextView。然后,在我的字符串资源文件中,设置...

<string name="my_textview_visibility">gone</string>(在值/strings.xml中)

...和...

<string name="my_textview_visibility">visible</string>(在values-sw720dp/strings.xml中)

...隐藏平板电脑的 TextView。

但是,当我尝试此操作时,应用程序在尝试显示该活动时崩溃。

我是否需要使用常量值而不是上面的字符串值 - 例如,

"visible"->0

"gone"->8

..如果是这样,将这些值添加到我的 XML 文件或从我的 XML 文件引用这些值的正确方法是什么?

或者还有另一种/更好的方法吗?

注意 - 我不想TextView在我的 Java 代码中以编程方式显示/隐藏。

Chr*_*ell 8

你应该改用/values/integers/

值/整数.xml

<integer name="my_textview_visibility">0</integer> <!-- 0 = View.VISIBLE -->
Run Code Online (Sandbox Code Playgroud)

值-sw720dp/integers.xml

<integer name="my_textview_visibility">2</integer> <!-- 2 = View.GONE -->
Run Code Online (Sandbox Code Playgroud)

然后像这样调用:

android:visibility="@integer/my_textview_visibility"
Run Code Online (Sandbox Code Playgroud)


Rob*_*ill 6

克里斯·史迪威的回答是正确的。但根据 Android 文档,这些值是不正确的

在此输入图像描述

  • 我明白了,但您想使用属性值而不是 java 常量值。https://developer.android.com/reference/android/view/View.html#attr_android:visibility (3认同)