动态调整网格项的大小

时间:2013-09-30 21:16:42

标签: android gridview android-screen-support

我正在尝试创建一个菜单屏幕,其中包含几个包含图像视图和文本框的网格项。我的目的是为不同的屏幕分辨率/维度获得相同的比例。

例如;下面的图像是我想要创建的。正如您所看到的,根据屏幕的大小,网格项目的维度会发生变化,但它们在屏幕上的比例仍然相同。

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>

1 个答案:

答案 0 :(得分:0)

最简单的方法是在dimens.xml文件夹中创建不同的values

<强>步骤:

  1. 在values文件夹中为特定分辨率创建dimens.xml,例如值,值-sw600dp,values-sw720dp
  2. 定义ImageView的维度值以及您想要的任何视图。 (维度变量名称在所有dimens.xml文件中必须相同)
  3. 现在只需在您想要的地方引用这些dimens.xml,就可以根据屏幕的大小和密度来获取尺寸值。