我有一个计算扑克赔率的安卓应用程序(如果你感兴趣,可以使用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,但考虑到布局的其余部分是相同的,并且只需要更改一个元素的大小,这似乎需要大量的维护开销。
那么,像这样缩放一个而不是所有元素的最好方法是什么?
发布于 2012-03-15 17:27:33
在看其他东西的时候,我几乎是事后才发现答案的。我根据不同的屏幕大小分离了具有不同样式的元素,即我在每个不同的布局中创建了一个适用于它的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,这显然是不起作用的,但对我来说并非如此。这意味着相同的布局可以服务于不同的屏幕尺寸。
发布于 2012-02-08 20:48:40
在Android开发人员指南中有一节是关于supporting multiple screens的。
它列出了一些选项,如:
https://stackoverflow.com/questions/9192805
复制相似问题