Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以为不同的屏幕大小定义不同的样式_Java_Android - Fatal编程技术网

Java 是否可以为不同的屏幕大小定义不同的样式

Java 是否可以为不同的屏幕大小定义不同的样式,java,android,Java,Android,我有一个Android应用程序,可以计算扑克赔率(如果你感兴趣的话)。它在屏幕上显示需要足够大才能点击的卡片。卡片由CardView类呈现并在布局中声明,如下所示: <com.shufflebot.view.CardView style="@style/CardView" android:id="@+id/flop1"></com.shufflebot.view.CardView> 相应的“CardView”样式在res/values/styles.xml中

我有一个Android应用程序,可以计算扑克赔率(如果你感兴趣的话)。它在屏幕上显示需要足够大才能点击的卡片。卡片由CardView类呈现并在布局中声明,如下所示:

<com.shufflebot.view.CardView style="@style/CardView"
    android:id="@+id/flop1"></com.shufflebot.view.CardView>

相应的“CardView”样式在res/values/styles.xml中声明

<style name="CardView">
    <item name="android:layout_width">40dp</item>
    <item name="android:layout_height">56dp</item>
    <item name="android:layout_marginRight">1dp</item>
</style>

40dp
56dp
1dp
CardView绘制到给定的任何尺寸。当应用程序在平板电脑上运行时,会有很多空白空间,所以我想通过将卡片变大从而更容易点击来利用它

是否可以定义替代的styles.xml来执行此操作?e、 g.我可以定义一个res/values-xlarge/styles.xml(适用于Android 3.2之前版本)和一个res/values-sw800dp/styles.xml,在这里我可以定义我的风格的替代版本吗?更好的是,当Android转到原始styles.xml获取其他值时,这个文件是否可以只包含一个修改过的样式

当我在Eclipse中尝试这样做时,我看到红色下划线向我暗示这是不受支持的

另一种选择是,我可以定义cards.xml的多个版本,例如layout xlarge/cards.xml,但考虑到布局的其余部分是相同的,并且只需要更改一个元素的大小,这似乎需要大量的维护开销


那么,扩展一个而不是所有这样的元素的最佳方式是什么呢?

Android开发指南中有一节重点介绍了

它列出了一些选项,如:

  • 在清单中明确声明应用程序支持的屏幕大小
  • 为不同的屏幕尺寸提供不同的布局
  • 为不同的屏幕密度提供不同的位图绘图

    • 我自己在看其他东西时,几乎是在事后才找到答案的。我根据不同的屏幕大小隔离了具有不同样式的元素,即,我在其适用的每个不同布局中创建了card.xml:

      <?xml version="1.0" encoding="utf-8"?>
      <com.shufflebot.view.CardView xmlns:android="http://schemas.android.com/apk/res/android"
          style="@style/CardViewLarge" >
      </com.shufflebot.view.CardView>
      
      
      

      
      
      然后,我用语句替换布局中的实例:

      <include android:id="@+id/river" layout="@layout/card" />
      
      
      

      如果这些卡的属性不同于id,那么这显然不起作用,但我不是这样。这意味着相同的一小撮布局可以提供不同的屏幕尺寸

      我知道我可以使用不同的布局,但我更喜欢使用相同布局的不同样式。除了一种特定视图的大小之外,布局是相同的。必须剪切、粘贴和维护多个相同的布局似乎不适合样式规则应该能够做到的事情。@locka:“在项目的res/目录中创建一个新目录,并使用以下格式命名:-。是标准资源名称(如drawable或layout)。”我认为这意味着文档只是使用了
      布局
      可绘制
      作为示例,它也可以使用
      。我希望这样做,但它似乎不像我的实验那样远。
      <include android:id="@+id/river" layout="@layout/card" />