2013-09-30 30 views
1

我試圖創造出有幾個網格項目包含圖像查看和文本框的菜單畫面。我的目的是爲不同的屏幕分辨率/尺寸獲得相同的比例。動態調整電網項目

例如;下圖是我正在嘗試創建的。正如你所看到的,根據屏幕的大小,網格項尺寸正在改變,但它們仍然在屏幕上覆蓋相同的比例。

enter image description here

Getting screen dimentions,並創建針對不同屏幕尺寸的每個網格項目近似大小是不是一個大問題。但是,設置適當的邊距並將網格視圖放置在屏幕中心是很繁瑣的。

是否有這樣做的更容易或更實際的方法?

grid_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:layout_margin="5dp" 
android:orientation="vertical" > 

<ImageView 
    android:id="@+id/menu_item_image" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_weight="2" 
    android:contentDescription="@string/menu_item" /> 

<TextView 
    android:id="@+id/menu_item_text" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_gravity="center" 
    android:layout_weight="8" 
    android:gravity="center" /> 

</LinearLayout> 

activity_main_menu.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/LinearLayout1" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".MainMenuActivity" > 

<GridView 
    android:id="@+id/mainGridView" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_gravity="center_vertical|center_horizontal" 
    android:layout_margin="20dp" 
    android:numColumns="2" > 

</GridView> 

</LinearLayout> 

回答

0

最簡單的方法是創建不同dimens.xmlvalues文件夾中。

步驟:

  1. 在像值的特定分辨率,價值觀sw600dp,價值觀sw720dp
  2. 值文件夾中創建dimens.xml定義尺寸值的ImageView的和你想要的任何意見。 (漁政船變量名必須在所有dimens.xml文件相同)
  3. 現在只是指這些dimens.xml無論你想,它會根據屏幕的大小和密度取尺寸值。