Android 不同的屏幕尺寸可以有不同的样式吗?

Android 不同的屏幕尺寸可以有不同的样式吗?,android,gridview,Android,Gridview,我的应用程序中有一个GridView,我想根据当前屏幕宽度手动设置列数 我试图做的是设置一种应用于GridView的样式,并在values-w600dp文件夹中提供一种替代样式,将android:numColumns属性设置为不同的值。这不管用 我知道有不同的方法可以实现我最初提出的目标(例如,通过声明一个整数资源并以公共样式使用它),其中将列宽设置为一个值并允许GridView自动确定列数可能是最明智的解决方案 然而,我仍然想知道为什么我最初的尝试没有成功。在文档中,我发现带有样式的XML文件

我的应用程序中有一个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>
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyGridView">
        <item name="android:numColumns">2</item>
    </style>
</resources>

1.
res/values-w400dp/styles.xml

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

2.
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将根据加载时的当前条件加载相应的资源;更多信息,请参阅。基本上,资源文件夹的名称决定了它们应在何时加载,因此您可以拥有文件夹

/values
/values-sw50dp  (smallest width 50dp, for screens bigger than 50dp)
/values-car     (if you were in a car dock)
等等。您可以使用许多选项,如
屏幕大小
以获得一般感觉,或
可用宽度
以根据宽度进行选择

不过


只有在清单中没有为该活动设置任何
configChanges
时,这才有效:如果您确实设置了一些,Android会假设您自己处理所有事情,并且不会自动加载正确的资源。另外,一般来说,遵循良好的代码意识,不要过火,为15种不同的屏幕宽度分别创建一个单独的布局文件。

简短的回答是肯定的……请为gridview以及包含gridview的布局发布您的风格。很高兴您找到了它。谢谢大家,愚蠢的错误=(