GridLayout比屏幕大

时间:2015-10-30 15:14:16

标签: android gridview

我有一个GridLayout,但孩子们将layout_width设置为match_parent,然后将GridLayout扩展到屏幕外(见图片) )。

如何设置项目match_parent,将GridLayout保留在屏幕内?

enter image description here

这是我的代码:

<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:layout_margin="8dp">

            <GridLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:columnCount="2">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Buscar"
                    android:id="@+id/tvRecorrido"
                    android:layout_gravity="center_vertical"/>

                <SearchView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/svBusqueda"
                    android:queryHint="@string/hint_buscar"/>    

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Fecha"
                    android:layout_gravity="center_vertical"/>

                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="none"
                    android:focusable="false"
                    android:id="@+id/etFecha"
                    android:layout_gravity="center_vertical"/>
            </GridLayout>    

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/btn_ver_horarios"
                android:id="@+id/buttonIniciarSesion"
                android:textColor="@color/azul"
                android:background="?android:attr/selectableItemBackground"
                android:layout_gravity="center_horizontal"
                android:onClick="verHorarios"
                android:paddingLeft="8dp"
                android:paddingRight="8dp"
                android:layout_marginTop="15dp"/>

        </LinearLayout>

1 个答案:

答案 0 :(得分:0)

好的,这就是我最终只使用一个RelativeLayout(避免令人讨厌的嵌套布局更适合表演)。

棘手的部分是使TextViews与其交配的可编辑视图垂直对齐 解决方案是给所有视图提供相同的固定宽度(40 dp,结果是非常好的值)。

结果如下:

enter image description here

注意:由于我不使用你的主题(也不是材料设计 - 因为我是一个自由的思想家,喜欢以自己的方式做事,总是如此),我使用背景颜色作为父版面。

这会留下一个白色边框(没有时间和意志来解决这个问题)。 你不会遇到这个问题。只需将其从RelativeLayout中删除即可。

这是我使用的代码(在评论中,您将了解如何恢复SearchView和按钮):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#bdf"
    android:layout_margin="8dp"
    >

    <TextView
        android:id="@+id/tvRecorrido"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:text="Buscar"
        android:gravity="center_vertical"
        android:layout_marginRight="8dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
    />
<!--    <SearchView -->
<!--        android:id="@+id/svBusqueda" -->
<!--        android:layout_width="match_parent" -->
<!--        android:layout_height="40dp" -->
<!--        android:queryHint="@string/hint_buscar" -->
<!--        android:layout_alignParentTop="true" -->
<!--        android:layout_alignParentRight="true" -->
<!--        android:layout_toLeftOf="@id/tvRecorrido" -->
<!--    /> -->



<!--
    For my test project only, I replaced the SerachView (requires API Level 11)
    with an EditText (I support API Level 8+)
-->
<!-- You can simply remove my EditText (below) and uncomment your SearchView (above) -->

    <EditText
        android:id="@+id/svBusqueda"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:queryHint="This was: @string/hint_buscar"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:layout_toRightOf="@id/tvRecorrido"
    />

    <TextView
        android:id="@+id/tvFecha"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:text="Fecha"
        android:gravity="center_vertical"
        android:layout_marginRight="8dp"
        android:layout_alignParentLeft="true"
        android:layout_below="@id/svBusqueda"
    />
    <EditText
        android:id="@+id/etFecha"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:inputType="none"
        android:focusable="false"
        android:layout_gravity="center_vertical"
        android:layout_alignParentRight="true"
        android:layout_toRightOf="@id/tvFecha"
        android:layout_below="@id/svBusqueda"
    />

<!--    <Button -->
<!--        android:layout_width="wrap_content" -->
<!--        android:layout_height="wrap_content" -->
<!--        android:text="@string/btn_ver_horarios" -->
<!--        android:id="@+id/buttonIniciarSesion" -->
<!--        android:textColor="@color/azul" -->
<!--        android:background="?android:attr/selectableItemBackground" -->
<!--        android:onClick="verHorarios" -->
<!--        android:paddingLeft="8dp" -->
<!--        android:paddingRight="8dp" -->
<!--        android:layout_marginTop="15dp" -->
<!--        android:layout_centerHorizontal="true" -->
<!--        android:layout_alignBottom="@id/etFecha" -->
<!--    /> -->



<!-- For my test project only, I removed: -->

<!--        android:textColor="@color/azul" -->
<!--        android:background="?android:attr/selectableItemBackground" -->
<!--        android:text="@string/btn_ver_horarios" -->

<!-- I used fixed values in place of the string and the color resources -->
<!-- You can simply remove my Button (below) and uncomment yours (above) -->

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="VER HORARIOS"
        android:background="#bdf"
        android:id="@+id/buttonIniciarSesion"
        android:textColor="#4af"
        android:onClick="verHorarios"
        android:paddingLeft="8dp"
        android:paddingRight="8dp"
        android:layout_marginTop="15dp"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/etFecha"
    />
</RelativeLayout>