首先在activity_main.xml加入一个EditText
通过xml的方式来沈成一个图像
在drawable中新建一个white_bg.xml文件,同时选择一个shape标签
corners设置圆角
<corners android:radius="5dp"/>
gradient设置颜色渐变
<gradient android:startColor="#FFFFFF" android:endColor="#00FFFF" />
stroke设置边框的宽度和颜色
<stroke android:color="#FFFFFF" android:width="1dp" />
将white_bg.xml部署到activity_main.xml的EditText的android:background属性中
android:background="@drawable/white_bg"
但是我们现在要做的计算器的EditText有特定的要求,所以注释掉white_bg.xml里面的gradient和stroke属性,添加solid属性。
<solid android:color="#FFFFFF"/>
需要对当前这个activity更改一下背景颜色为黑色并且没有标题栏,所以需要修改一下AndroidManifest.xml中activity的android:theme。
android:theme="@android:style/Theme.Black.NoTitleBar"
这里遇到了一个问题,就是在AndroidManifest.xml中修改了activity的android:theme属性后调试的时候程序出现闪退的情况,原来是因为我的MainActivity类继承自ActionBarActivity,将MainActivity类改为继承自FragmentActivity类即可解决这个问题。
但是EditText中的内容是不可以编辑的,并且文字需要显示在右下方,所以需要设置EditText的editable和gravity属性
android:editable="false" android:gravity="right|bottom"
然后就是繁琐的进行Button的布局的管理,因为这里用的是LinearLayout,所以要特别注意layout_weight的使用
android:layout_weight的真实含义是:一旦View设置了该属性(假设有效的情况下),那么该 View的宽度等于原有宽度(android:layout_width)加上剩余空间的占比!
Google官方推荐,当使用weight属性时,将width设为0dip即可,效果跟设成wrap_content是一样的。这样weight就可以理解为占比了。
修改按钮样式
修改按钮默认颜色白色,点击后颜色红色。
修改“=”键默认颜色绿色,点击后颜色蓝色。
在drawable/目录下新建集中不同颜色对应的xml文件(并在创建时选择shape)
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <corners android:radius="5dp"/> <solid android:color="#FFFFFF"/> </shape>
white_bg.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="#FFFF00"/> </shape>
yellow_bg.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="#00FF00"/> </shape>
green_bg.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="#0000FF"/> </shape>
blue_bg.xml
在drawable/目录下再创建两个样式xml文件(并在创建时选择selector),一个样式要求在没有按下时显示白色,按下时显示绿色。
<item android:drawable="@drawable/white_bg" android:state_pressed="false" />
<item android:drawable="@drawable/green_bg" android:state_pressed="true" />
另一个样式要求在没有按下时显示黄色,按下时显示蓝色。
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/white_bg" android:state_pressed="false" /> <item android:drawable="@drawable/green_bg" android:state_pressed="true" /> </selector>
white_selector.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/yellow_bg" android:state_pressed="false" /> <item android:drawable="@drawable/blue_bg" android:state_pressed="true" /> </selector>
yellow_selector.xml
最后给每一个button添加“android:background="@drawable/white_selector"”实现样式的转换。