我有一个GridLayout
,但孩子们将layout_width
设置为match_parent
,然后将GridLayout
扩展到屏幕外(见图片) )。
如何设置项目match_parent
,将GridLayout
保留在屏幕内?
这是我的代码:
<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>
答案 0 :(得分:0)
好的,这就是我最终只使用一个RelativeLayout(避免令人讨厌的嵌套布局更适合表演)。
棘手的部分是使TextViews与其交配的可编辑视图垂直对齐 解决方案是给所有视图提供相同的固定宽度(40 dp,结果是非常好的值)。
结果如下:
注意:由于我不使用你的主题(也不是材料设计 - 因为我是一个自由的思想家,喜欢以自己的方式做事,总是如此),我使用背景颜色作为父版面。
这会留下一个白色边框(没有时间和意志来解决这个问题)。 你不会遇到这个问题。只需将其从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>