2012-02-08 23 views
2

我有一个可以计算扑克赔率的Android应用程序(如果您有兴趣,可以使用Shufflebot)。它在屏幕上显示需要足够大以便点击的卡片。 A卡由CardView类像这样渲染,并宣布在布局:是否可以为不同的屏幕尺寸定义不同的样式

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

相应的“CardView”的风格是在RES /价值/ 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> 

CardView可以绘制它给出的任何尺寸。应用程序在平板电脑上运行时有很多空白区域,所以我想通过使卡片变大并因此更容易点击而使用它。

是否可以定义一个替代styles.xml来做到这一点?例如我可以定义res/values-xlarge/styles.xml(适用于Android 3.2以前的版本)和res/values-sw800dp/styles.xml,我可以在其中定义我的样式的替代版本吗?更好的是,这个文件是否只包含一个修改过的样式,而Android会转到其他值的原始styles.xml中?

当我在Eclipse中尝试这个时,我看到红色的下划线暗示我不支持这个。

另一种方法是我可以定义cards.xml的多个版本,例如layout-xlarge/cards.xml,但这看起来像是很多维护开销,因为其他布局相同,只是需要更改一个元素的大小。

那么缩放一个但不是所有这样的元素的最佳方式是什么?

回答

2

我自己找到了答案,自己几乎是在看别的东西时事后才想到的。余中分离,其具有根据不同screensizes不同风格的元素,即,创建,它适用于每个不同布局的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> 

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

然后我替换实例在我的布局与报表:

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

这显然如果卡有比是不同的,但不是我的情况下,ID其他属性是行不通的。这意味着相同的一些布局可以提供不同的屏幕尺寸。

1

Android开发者指南中有一部分着重于supporting multiple screens

它列出了一些选项:

  • 在屏幕尺寸您的应用程序清单明确宣布支持
  • 提供不同的屏幕不同的布局尺寸
  • 针对不同屏幕密度
  • 提供不同的位图资源
+0

我知道我可以使用不同的布局,但我宁愿使用相同布局的不同样式。除了一种特定类型的视图的大小之外,布局是相同的。不得不剪裁,粘贴和维护多个相同的布局对于风格规则应该能够做到的事情来说似乎并不正确。 – locka 2012-02-08 12:57:45

+0

@locka:“在项目的res /目录中创建一个新目录,并使用以下格式命名它: - 是标准资源名称(例如drawable或layout)。”我认为这意味着文档只是使用'layout'和'drawable'作为例子,它也可以使用'values'。 – unholysampler 2012-02-08 13:19:40

+0

我希望它能做到,但它并没有像我的实验一样。 – locka 2012-02-08 15:03:31