适合118个按钮 - Android

时间:2014-01-02 14:54:43

标签: android button

我正在为android开发一个周期表应用程序。但是我无法安装所有118个按钮来表示我的布局中的元素。

这是我到目前为止所写的内容:

<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"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:background="#000000"
tools:context=".GridActivity">

<Button
    android:layout_width="30dp"
    android:layout_height="30dp"
    android:text="H"
    android:textSize="18dp"
    android:textColor="#f2f2f2"
    android:background="@drawable/table_button"
    android:id="@+id/button"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true" />

<Button
    android:layout_width="30dp"
    android:layout_height="30dp"
    android:text="Li"
    android:textSize="18dp"
    android:textColor="#f2f2f2"
    android:background="@drawable/table_button"
    android:id="@+id/button2"
    android:layout_below="@+id/button"
    android:layout_alignLeft="@+id/button"
    android:layout_alignRight="@+id/button" />

<Button
    android:layout_width="30dp"
    android:layout_height="30dp"
    android:textSize="16dp"
    android:textColor="#f2f2f2"
    android:background="@drawable/table_button"
    android:text="Na"
    android:id="@+id/button3"
    android:layout_below="@+id/button2"
    android:layout_alignLeft="@+id/button2" />

<!--And the rest 115 buttons so on ...-->

</RelativeLayout>

这就是Nexus 4的样子。

但是,这种布局在小屏幕设备上给出了问题(最后3个colmns正在离开屏幕等)。在大屏幕平板电脑上,这种布局太小了。请帮我容纳这么多按钮,请提供您想法的示例代码!请帮助我。

提前致谢!

1 个答案:

答案 0 :(得分:2)

也许您可以使用LinearLayout作为父级,每行使用linearlayouts,使用权重确保所有按钮的宽度和高度相同,并在空白处放置“空”按钮。这样,无论屏幕尺寸如何,布局都适合重量

编辑:

这是一个简单的例子。你有8行和18列,所以父线性布局的权重为8,所以你添加的每一行的权重都是1,它们都会同样高。

在内部,你有8个垂直线性布局,每个布局的权重为18,每个都有重量为1的元素按钮。

这样,所有按钮都具有相同的高度和重量,您可以保持表格结构,并且它可以适应任何屏幕

<?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:orientation="vertical"
android:weightSum="8" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_gravity="center_vertical"
    android:layout_weight="1"
    android:orientation="horizontal"
    android:weightSum="18" >

    <Button
        android:id="@+id/button"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:background="@drawable/table_button"
        android:text="H" 
        android:layout_weight="1"/>

    <!-- 16 of these -->
    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:visibility="invisible" />

    <Button
        android:id="@+id/button2"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:background="@drawable/table_button"
        android:text="He" 
        android:layout_weight="1" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_gravity="center_vertical"
    android:layout_weight="1"
    android:orientation="horizontal"
    android:weightSum="18" >

    <!-- ... -->

</LinearLayout>

<!-- ... -->

</LinearLayout>

希望它有所帮助。

相关问题