从 styles.xml 切换应用主题时,有没有办法改变项目的可见性?
Is there a way to change visibility of an item when switching app theme from styles.xml?
我正在尝试根据所选的应用主题实现星空背景动画 visible/gone 的效果。
<com.starry.animation
android:id="@+id/stars"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:starsView_bigStarThreshold="10dp"
app:starsView_meteoritesColors="@array/meteorites_colors"
app:starsView_meteoritesEnabled="true"
app:starsView_meteoritesInterval="2000"
app:starsView_maxStarSize="3dp"
app:starsView_minStarSize="1dp"
android:visibility="?visibilityMode"
android:background="@android:color/transparent"
app:starsView_starColors="@array/star_colors_small"
app:starsView_starCount="100" />
我在 styles.xml 中将 visibilityMode 声明为字符串属性
<attr name="visibilityMode" format="string" />
在我的自定义主题中为:
<item name="visibilityMode">GONE</item>
这会导致星星视图膨胀时出错。是否有其他一些实现可以达到类似的结果?
实际上可见性不是字符串而是整数。
0
用于可见的初始状态。
2
用于 gone 初始状态
(不要与 View.Gone
和 View.Visible
混淆)。
因此在您的情况下,自定义属性可能如下所示:
<attr name="visibilityMode" format="integer">
<!-- Visible on screen; the default value. -->
<enum name="visible" value="0" />
<!-- Completely hidden, as if the view had not been added. -->
<enum name="gone" value="2" />
</atrr>
比它可以在主题中使用:
<item name="visibilityMode">gone</item>
在您的布局项中:android:visibility="?visibilityMode"
请查看this answer
我正在尝试根据所选的应用主题实现星空背景动画 visible/gone 的效果。
<com.starry.animation
android:id="@+id/stars"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:starsView_bigStarThreshold="10dp"
app:starsView_meteoritesColors="@array/meteorites_colors"
app:starsView_meteoritesEnabled="true"
app:starsView_meteoritesInterval="2000"
app:starsView_maxStarSize="3dp"
app:starsView_minStarSize="1dp"
android:visibility="?visibilityMode"
android:background="@android:color/transparent"
app:starsView_starColors="@array/star_colors_small"
app:starsView_starCount="100" />
我在 styles.xml 中将 visibilityMode 声明为字符串属性
<attr name="visibilityMode" format="string" />
在我的自定义主题中为:
<item name="visibilityMode">GONE</item>
这会导致星星视图膨胀时出错。是否有其他一些实现可以达到类似的结果?
实际上可见性不是字符串而是整数。
0
用于可见的初始状态。
2
用于 gone 初始状态
(不要与 View.Gone
和 View.Visible
混淆)。
因此在您的情况下,自定义属性可能如下所示:
<attr name="visibilityMode" format="integer">
<!-- Visible on screen; the default value. -->
<enum name="visible" value="0" />
<!-- Completely hidden, as if the view had not been added. -->
<enum name="gone" value="2" />
</atrr>
比它可以在主题中使用:
<item name="visibilityMode">gone</item>
在您的布局项中:android:visibility="?visibilityMode"
请查看this answer