如何使网格布局的内容保持在屏幕内

时间:2016-11-05 17:59:20

标签: android autoresize android-gridlayout android-imagebutton

我正在开发一个应用程序,有100个按钮。我想将所有按钮放在屏幕内。我正在使用一个GridLayout,问题就在于我所遇到的问题就是按钮已经离开了屏幕。

This is the problem that I am having

这是代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/content_main"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context=".MainActivity"
    tools:showIn="@layout/app_bar_main"
    android:layout_column="1">

 <GridLayout
    android:id="@+id/GridLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:columnCount="6"
    android:rowCount="17"
    android:orientation="vertical">

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        app:srcCompat="@drawable/numero_1"
        android:id="@+id/button1"/>

我的问题是:这可能吗?这是最好的方法吗?

我做了其他测试,我改变了图像的大小。结果不是我预期的标题

具有不同尺寸图像的结果

Image with other size

正如您在第二张图片中看到的那样,行中的按钮位于屏幕内,但按钮的位置不正常,行的最后一个按钮和屏幕的末尾之间有很多空间。

我正在寻找的解决方案是,布局不允许按钮离开屏幕,并且如果屏幕尺寸不同,则会自动调整按钮和边缘之间的空间大小。布局将自动适应屏幕的大小。

1 个答案:

答案 0 :(得分:0)

我认为这是不可能的。我建议你在一个水平使用6个垂直LinearLayouts,在内部使用重量1。我知道这不是最优化的方式,但它最简单。另一个是保持GridLayout并计算图像的大小并从Java代码设置它们的大小。