ListView 的样式应该影响它的元素吗?
Should styling a ListView affect its elements?
我今天阅读了 Android 样式和主题,并尝试将其应用于我的应用程序中的列表作为测试。该应用程序有一个列表元素,该元素以编程方式添加了 TextView。
根据文档,将样式应用为主题也会影响子视图。
所以我尝试了这个:
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/TextAppearance.AppCompat.Small"/>
我预计列表中的 TextView 文本会变小,但什么也没发生。
我也试了@style/TextAppearance.MaterialComponents.Headline1
,也没效果
这是为什么?
我自己没有更改任何样式或主题设置。我使用 Android Studio 为项目生成的默认设置。
像上面那样将样式作为主题应用到视图上不应该改变什么吗?
您使用的样式 "TextAppearance.AppCompat.Small" 适用于 TextView 而不是像 ListView 这样的通用样式。
您需要将样式应用于列表 item,即 TextView。您可以为文本外观、字体、大小等创建自定义样式,并在您的整个应用中重复使用它。
如果您以编程方式创建视图,则可以使用自定义适配器(扩展您的默认适配器),覆盖 getView 方法以应用您的样式。参考 this
参考 this @Nick Butcher 的精彩文章
我今天阅读了 Android 样式和主题,并尝试将其应用于我的应用程序中的列表作为测试。该应用程序有一个列表元素,该元素以编程方式添加了 TextView。
根据文档,将样式应用为主题也会影响子视图。
所以我尝试了这个:
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/TextAppearance.AppCompat.Small"/>
我预计列表中的 TextView 文本会变小,但什么也没发生。
我也试了@style/TextAppearance.MaterialComponents.Headline1
,也没效果
这是为什么?
我自己没有更改任何样式或主题设置。我使用 Android Studio 为项目生成的默认设置。
像上面那样将样式作为主题应用到视图上不应该改变什么吗?
您使用的样式 "TextAppearance.AppCompat.Small" 适用于 TextView 而不是像 ListView 这样的通用样式。
您需要将样式应用于列表 item,即 TextView。您可以为文本外观、字体、大小等创建自定义样式,并在您的整个应用中重复使用它。
如果您以编程方式创建视图,则可以使用自定义适配器(扩展您的默认适配器),覆盖 getView 方法以应用您的样式。参考 this
参考 this @Nick Butcher 的精彩文章