gpt4 book ai didi

android - 不同屏幕尺寸的样式可以不同吗?

转载 作者:行者123 更新时间:2023-11-29 21:18:55 25 4
gpt4 key购买 nike

我的应用程序中有一个 GridView,我想根据当前屏幕宽度手动设置列数。

我试图做的是设置一个应用于 GridView 的样式,并在 values-w600dp 文件夹中提供替代样式,其中包含 android:numColumns 属性设置为不同的值。这没有用。

我知道有不同的方法可以实现我最初提出的目标(例如通过声明一个整数资源并以通用样式使用它),其中将列宽设置为一个值并允许 GridView 自动确定列数可能是最明智的解决方案。

但是,我仍然想知道为什么我最初的尝试没有奏效。在文档中,我发现带有样式的 XML 文件可以任意命名,只要将其放在 res/values 目录中即可。对于字符串也有类似的说法,并且字符串是可本地化的,所以我不知道文档是否说它不起作用,或者这是否意味着它可以在不同的 res/values-... 目录,如字符串。

那么问题来了:能否为不同的配置提供样式?

编辑:发布的文件

res/values/styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyGridView">
<item name="android:numColumns">1</item>
</style>
</resources>

res/values-w400dp/styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyGridView">
<item name="android:numColumns">2</item>
</style>
</resources>

res/layout/grid_fragment.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingTop="?android:attr/actionBarSize"
>
<GridView
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:verticalSpacing="12dp"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:clipToPadding="false"
android:listSelector="@drawable/list_selector"
android:drawSelectorOnTop="true"
style="@style/MyGridView"
/>
</RelativeLayout>

我在贴代码的时候发现了问题。我在布局 XML 中犯了一个愚蠢的错误:style="MyGridView"

最佳答案

是的,但有一些注意事项。

Android默认会在加载时根据当前情况加载合适的资源;见the Android Docs on Resources更多。基本上,您的资源文件夹的名称决定了它们应该何时加载,因此您可以拥有文件夹

/values
/values-sw50dp (smallest width 50dp, for screens bigger than 50dp)
/values-car (if you were in a car dock)

等您可以使用许多选项,例如用于一般感觉的 screensize,或基于宽度的 available width

然而。

这仅在您未在 list 中为该 Activity 设置任何 configChanges 时有效:如果您确实有一些设置,Android 会假定您自己处理所有事情并且不会自动加载正确的资源。此外,通常要遵循良好的代码意识,不要过火,为 15 种不同的屏幕宽度中的每一种创建一个单独的布局文件。

关于android - 不同屏幕尺寸的样式可以不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20983814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com