【android】用EditText控件和Button控件实现一个简易计算器

本文介绍如何利用Android的EditText和Button控件构建一个简单的计算器应用。详细讲解了按钮背景颜色变化、EditText只显示不输入的实现以及按键布局的处理方法。
摘要由CSDN通过智能技术生成

           小文章主要想通过EditText控件和Button控件实现一个简易的计算器。计算器见面如下图:


      先来看几个小细节的处理:

      (1)按Button键时,背景颜色变化的处理(“=”号键在按下时由原来的橘红色变土色,其余键由原来的白色变为灰色)。

        我们这里就已清除键C为例。先在res文件夹下新建一个drawable文件夹,然后新建一个类型为shape的XML文件并做如下定义(android:radius设置按键四角为圆角;android:color此时设置为白色):

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <corners
        android:radius="5dp"/>
    <solid
        android:color="#ffffffff"/>

</shape>
       按相同的办法,再定义一个灰色的xml文件:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
        <corners
        android:radius="5dp"/>
    <solid
        android:color="#ffDEDEDE"/>

</shape>
      那怎么实现在按键的时候能使按键由白色变成灰色呢?下面我们马上来看看:在/res/drawable定义一个selector的xml文件并作如下定义(android:drawable/white为按键刚开始背景颜色,android:drawable/gray为按键背景被按下后的颜色,同时,设置state_pressed为true):
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/gray"
          android:state_pressed="true"/>
    <item android:drawable="@drawable/white"/>

</selector>
      然后在Activity.xml文件中通过属性android:backgroup属性引用这个xml文件就可以实现这个效果,我们马上来看看按键clear在Activity.xml文件中的实现吧:

<Button 
                android:id="@+id/button_clear"
                android:gravity="right|bottom"
                android:layout_width="60dp"
                android:layout_height="60dp"
                android:paddingTop="10dp"
                android:paddingRight="10dp"
                android:textSize="20sp"
                <strong>android:background="@drawable/whitetogray"</strong>
                android:text="C"/>
     效果如下:


     

       (2)关于EditText控件用于显示而不能输入以及背景的实现:平常EditText控件使用最多的恐怕是当作输入框来实现,如果要实现EditText控件只能作为显示肉不能作为输出,这时,EditText控件的editable属性就起到了非常重要的作用(即把android:editable设置为false),下面来看下EditText控件在Activity.xml中的实现吧:

<EditText 
        android:id="@+id/Edit_Text"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:background="@drawable/white"
        android:textSize="20sp"
        android:editable="false"
        android:gravity="right|bottom"
        />
       android:gravity="right|bottom"属性设置使显示在EditText框内的文字能够从右向左显示,这也符合我们的视觉习惯,哈哈哈。

       (3)关于按键布局的处理:这边我建议以整体的思维去考虑这个为题,a、整体上看成是<linearLayout下属性为android:oriention为竖直的布局(即EditText控件和整个大Button控件成竖直排列);b、下方Button控件,可以先把它以行分为4个小布局,前三行每行为一个属性为android:oriention为水平的LinearLayout排列,最后两行我们也先堪称一个一个属性android:oriention为水平的LinearLayout排列(前三列为一个子布局(再按属性为竖直的直线布局),后面一个为单独一个自布局),代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height=
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值