我有一个Android应用程序可以计算扑克赔率(Shufflebot如果您有兴趣)。它在屏幕上显示需要足够大才能点击的卡片。一张卡片由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>
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但这似乎是很多维护开销,因为布局的其余部分是相同的,而且只是需要更改的一个元素的大小。
那么缩放一个但不是所有元素的最佳方法是什么?
答案 0 :(得分:2)
我在找到别的东西时,几乎是在事后的想法中找到答案。我根据不同的屏幕大小隔离了具有不同样式的元素,即我在每个不同的布局中创建了一个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不同于id,那么这显然是行不通的,但对我来说并非如此。这意味着同样少数布局可以提供不同的屏幕尺寸。
答案 1 :(得分:1)
Android开发指南中有一节专注于supporting multiple screens。
它列出了一些选项: