GridLayout 使用

上次做了一个小键盘,请见:PopupWindow 使用

效果是这样的:

可以看到,上面的按键是不一样大小的。因为是用LinearLayout布局,用的Button样式也是默认的。数字键和文字键的大小不一致。

为了使按键大小一致,并且定制Button样式,决定改用GridLayout实现。过程如下:

1.GridLayout

布局文件如下:

<?xml version="1.0" encoding="utf-8"?><android.support.v7.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    android:id="@+id/pinpad_dialog"    android:layout_width="match_parent"    android:layout_height="wrap_content"    app:columnCount="3"    app:orientation="horizontal"    app:rowCount="6">

<Button        android:id="@+id/btnUp"        android:layout_height="30dp"        android:layout_margin="3dp"        android:background="@drawable/key_btn_func_style"        android:gravity="center"        android:soundEffectsEnabled="true"        android:text="@string/up_arrow"        android:textSize="26sp"        app:layout_columnWeight="1"        app:layout_rowWeight="1" />

<Button        android:id="@+id/btnDown"        android:layout_height="30dp"        android:layout_margin="3dp"        android:background="@drawable/key_btn_func_style"        android:soundEffectsEnabled="true"        android:text="@string/down_arrow"        android:textSize="26sp"        app:layout_columnWeight="1"        app:layout_rowWeight="1" />

<Button        android:id="@+id/btnMenu"        android:layout_height="30dp"        android:layout_margin="3dp"        android:background="@drawable/key_btn_func_style"        android:soundEffectsEnabled="true"        android:text="Menu"        android:textSize="20sp"        app:layout_columnWeight="1"        app:layout_rowWeight="1" />

<Button        android:id="@+id/btn1"        android:layout_height="30dp"        android:layout_margin="3dp"        android:background="@drawable/key_button_style"        android:soundEffectsEnabled="true"        android:text="1"        android:textSize="20sp"        app:layout_columnWeight="1"        app:layout_rowWeight="1" />

<Button        android:id="@+id/btn2"        android:layout_height="30dp"        android:layout_margin="3dp"        android:background="@drawable/key_button_style"        android:soundEffectsEnabled="true"        android:text="2"        android:textSize="20sp"        app:layout_columnWeight="1"        app:layout_rowWeight="1" />

<Button        android:id="@+id/btn3"        android:layout_height="30dp"        android:layout_margin="3dp"        android:background="@drawable/key_button_style"        android:soundEffectsEnabled="true"        android:text="3"        android:textSize="20sp"        app:layout_columnWeight="1"        app:layout_rowWeight="1" />

<Button        android:id="@+id/btn4"        android:layout_height="30dp"        android:layout_margin="3dp"        android:background="@drawable/key_button_style"        android:soundEffectsEnabled="true"        android:text="4"        android:textSize="20sp"        app:layout_columnWeight="1"        app:layout_rowWeight="1" />

<Button        android:id="@+id/btn5"        android:layout_height="30dp"        android:layout_margin="3dp"        android:background="@drawable/key_button_style"        android:soundEffectsEnabled="true"        android:text="5"        android:textSize="20sp"        app:layout_columnWeight="1"        app:layout_rowWeight="1" />

<Button        android:id="@+id/btn6"        android:layout_height="30dp"        android:layout_margin="3dp"        android:background="@drawable/key_button_style"        android:soundEffectsEnabled="true"        android:text="6"        android:textSize="20sp"        app:layout_columnWeight="1"        app:layout_rowWeight="1" />

<Button        android:id="@+id/btn7"        android:layout_height="30dp"        android:layout_margin="3dp"        android:background="@drawable/key_button_style"        android:soundEffectsEnabled="true"        android:text="7"        android:textSize="20sp"        app:layout_columnWeight="1"        app:layout_rowWeight="1" />

<Button        android:id="@+id/btn8"        android:layout_height="30dp"        android:layout_margin="3dp"        android:background="@drawable/key_button_style"        android:soundEffectsEnabled="true"        android:text="8"        android:textSize="20sp"        app:layout_columnWeight="1"        app:layout_rowWeight="1" />

<Button        android:id="@+id/btn9"        android:layout_height="30dp"        android:layout_margin="3dp"        android:background="@drawable/key_button_style"        android:soundEffectsEnabled="true"        android:text="9"        android:textSize="20sp"        app:layout_columnWeight="1"        app:layout_rowWeight="1" />

<Button        android:id="@+id/btnFunc"        android:layout_height="30dp"        android:layout_margin="3dp"        android:background="@drawable/key_btn_func_style"        android:soundEffectsEnabled="true"        android:text="Func"        android:textSize="20sp"        app:layout_columnWeight="1"        app:layout_rowWeight="1" />

<Button        android:id="@+id/btn0"        android:layout_height="30dp"        android:layout_margin="3dp"        android:background="@drawable/key_button_style"        android:soundEffectsEnabled="true"        android:text="0"        android:textSize="20sp"        app:layout_columnWeight="1"        app:layout_rowWeight="1" />

<Button        android:id="@+id/btnAlpha"        android:layout_height="30dp"        android:layout_margin="3dp"        android:background="@drawable/key_btn_clear_style"        android:soundEffectsEnabled="true"        android:text="Alpha"        android:textSize="20sp"        app:layout_columnWeight="1"        app:layout_rowWeight="1" />

<Button        android:id="@+id/btnCancel"        android:layout_height="30dp"        android:layout_margin="3dp"        android:background="@drawable/key_btn_cancel_style"        android:soundEffectsEnabled="true"        android:text="Cancel"        android:textSize="20sp"        app:layout_columnWeight="1"        app:layout_rowWeight="1" />

<Button        android:id="@+id/btnClear"        android:layout_height="30dp"        android:layout_margin="3dp"        android:background="@drawable/key_btn_clear_style"        android:soundEffectsEnabled="true"        android:text="Clear"        android:textSize="20sp"        app:layout_columnWeight="1"        app:layout_rowWeight="1" />

<Button        android:id="@+id/btnEnter"        android:layout_height="30dp"        android:layout_margin="3dp"        android:background="@drawable/key_btn_enter_style"        android:soundEffectsEnabled="true"        android:text="Enter"        android:textSize="20sp"        app:layout_columnWeight="1"        app:layout_rowWeight="1" />

</android.support.v7.widget.GridLayout>这里说明几点:

(1)android.support.v7.widget.GridLayout

这里用的是V7包中的GridLayout,因为在当前开发的应用中,设置minSdkVersion是19。
而下面要用到的两个属性,在一般的GridLayout中需要API21才能使用。
在AndroidStudio中,默认是还没有下载兼容包的控件的,在design模式下,点击相应的AppCompat控件,下载即可。

(2)使GridLayout的子元素平分屏幕

需要用下面的这两个属性。

app:layout_columnWeight="1"

app:layout_rowWeight="1"

具体参考:Android的GridLayout的子元素如何平分屏幕

2.自定义button样式

时间: 2024-10-13 02:22:52

GridLayout 使用的相关文章

计算器界面——GridLayout

1 <?xml version="1.0" encoding="utf-8"?> 2 <GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 and

GridLayout 计算器

<?xml version="1.0" encoding="utf-8"?> <GridLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:rowCo

第7章(4) GridLayout(网格布局)

分类:C#.Android.VS2015: 创建日期:2016-02-10 一.简介 Android 4.0(API 14)开始提供的GridLayout布局使用虚细线将布局划分为行.列和单元格,也支持一个控件在行.列上都有交错排列. GridLayout使用与LinearLayout类似的API,只不过是修改了一下相关的标签而已. 1.默认布局方式-先行后列 GridLayout默认按先行后列的方式依次显示,子元素默认按照wrap_content的方式显示.如果不希望子元素显式指定其所在的行列

android的布局-----GridLayout(网格布局)

学习导图 (一)简介 网格布局由GridLayout所代表,在android4.0之后新增加的布局管理器,因此需要android4.0之后的版本中使用,如果在更早的平台使用该布局管理器,则需要导入相应的支持库<android.support.v7.widget.GridLayout> (二)案列----计算器 <?xml version="1.0" encoding="utf-8"?> <GridLayout xmlns:android

Java图形化界面设计——布局管理器之GridLayout(网格布局) 之计算器

代码如下: import java.awt.*; import javax.swing.*; public class GridFrame extends JFrame { // 定义字符串数组,为按钮的显示文本赋值 String str[] = { "MC", "MR", "MS", "M+", "←", "C", "%", "π", "

java进阶10 GUI图形界面 布局管理器之FlowLayout GridLayout

先说说FlowLayout 流式布局管理器. 效果 这是当第一行显示不下,才转到第二行的. 看看代码 package Frame; import java.awt.BorderLayout; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; public class MyLayout{ JFrame frame; public MyLayout(JFrame frame) { //

信息界面——GridLayout

1 <?xml version="1.0" encoding="utf-8"?> 2 <GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 and

A019-布局之GridLayout

GridLayout 网格布局,是Android4.0之后的API才提供的,算是一个相对新的布局容器,它的用法也很简单,类似LinearLayout可以指定方向,也可以指定控件占用多少行或列的空间. 举例 我们看一个例子: 这里我做了一个登录的一个布局,如果不使用GridLayout来进行布局,可能会有多个布局的嵌套才能实现这样的布局,相对比较麻烦,使用了GridLayout我们可以更加灵活的去控制对齐:网格视图针对行和列进行分割为一个个单元格. 示例代码: <?xml version="

GridLayout布局

//JFrameClass.java import java.awt.*; import javax.swing.*; public class JFrameClass extends JFrame{ String[] str={"0","1","2","3","4","5","6","7","8","9",

Java FlowLayout、BorderLayout、GridLayout、GridBagLayout、CardLayout布局管理器

作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/40985027 一.FlowLayout布局管理器 FlowLayout() 构造一个新的 FlowLayout,它是居中对齐的,默认的水平和垂直间隙是 5 个单位. FlowLayout(int align) 构造一个新的 FlowLayout,它具有指定的对齐方式,默认的水平和垂直间隙是 5 个单位. FlowLayout(int align, int hgap, int