gpt4 book ai didi

java - 是否可以为不同的屏幕尺寸定义不同的样式

转载 作者:搜寻专家 更新时间:2023-11-01 09:09:40 24 4
gpt4 key购买 nike

我有一个 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 但这似乎是一个很大的维护开销,因为布局的其余部分是相同的,只是需要更改一个元素的大小。

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

最佳答案

在查看其他内容时,我几乎是事后才找到答案。我根据不同的屏幕尺寸隔离了具有不同样式的元素,即我在它适用的每个不同布局中创建了一个 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 以外的不同属性,这显然是行不通的,但对我而言并非如此。这意味着同一批布局可以服务于不同的屏幕尺寸。

关于java - 是否可以为不同的屏幕尺寸定义不同的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9192805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com