2012-02-08 67 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