如何调整gridlayout上显示的这些图像?

时间:2015-05-14 06:01:02

标签: java android layout

我已经在一个网格布局4个方向的底部显示,试图制作一个游戏控制面板"像这样:

enter image description here

游戏已经完成,但麻烦在于游戏面板",在平板电脑等大型设备上看起来非常小:

enter image description here

如何让按钮显示填充父母?,我的xml代码就是这样,我做了一个名为square layout的自定义布局来显示游戏:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"

tools:context=".MainActivity"
android:background="@drawable/background"
android:padding="10dp">

</*packages*/SquareLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/square"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true">

    //gameview
<//*packages*/SquareLayout>


<FrameLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/afgergg"
    android:id="@+id/frameLayout"
    android:layout_alignParentBottom="true">


    <GridLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center">

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/up"
            android:layout_row="0"
            android:layout_column="1"
            android:longClickable="true"
            android:background="@drawable/background"
            android:src="@drawable/ic_arrow_up" />

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/down"
            android:layout_row="2"
            android:layout_column="1"
            android:background="@drawable/background"
            android:src="@drawable/ic_arrow_down" />

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/left"
            android:layout_row="1"
            android:layout_column="0"
            android:background="@drawable/background"
            android:src="@drawable/ic_arrow_left" />

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/right"
            android:layout_row="1"
            android:layout_column="2"
            android:background="@drawable/background"
            android:clickable="true"
            android:src="@drawable/ic_arrow_right" />
        </GridLayout>
</FrameLayout>

2 个答案:

答案 0 :(得分:1)

您可以轻松地将其视为具有5个虚拟视图的3x3网格 即用

替换网格布局
<LinearLayout  android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    >
    <LinearLayout  android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
        <View  android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"/>
        <ImageButton
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/up"
            android:layout_weight="1"
            android:longClickable="true"
            android:adjustViewBounds="true"
            android:background="@drawable/background"
            android:src="@drawable/ic_arrow_up" />
        <View  android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"/>
    </LinearLayout>

    <LinearLayout  android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
        <ImageButton
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/left"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="@drawable/background"
            android:src="@drawable/ic_arrow_left" />
        <View  android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"/>
        <ImageButton
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/right"
            android:layout_weight="1"
            android:background="@drawable/background"
            android:clickable="true"
            android:adjustViewBounds="true"
            android:src="@drawable/ic_arrow_right" />
    </LinearLayout>

    <LinearLayout  android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
        <View  android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"/>
        <ImageButton
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/down"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:background="@drawable/background"
            android:src="@drawable/ic_arrow_down" />
        <View  android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"/>
    </LinearLayout>
</LinearLayout>

或者您可以使用表格布局。注意:您可能想要添加边距等。

答案 1 :(得分:0)

您可以像这样设置GridLayout个孩子的宽度和高度。每台设备的尺寸都相同。

   int mDesiredWidth = 70; 
   int mDesiredHeight= 70; 
   for (int i = 0; i < mGridLayout.getChildCount(); i++) {
        GridLayout.LayoutParams params = (GridLayout.LayoutParams) mGridLayout
                .getChildAt(i).getLayoutParams();
        params.setGravity(Gravity.CENTER);
        params.setMargins(0, 0, 0, 0);
        params.width = Math.round (mDesiredWidth* getResources().getDisplayMetrics().density);
        params.height = Math.round  (mDesiredHeight* getResources().getDisplayMetrics().density);

    }