Android入门笔记之线性布局(计算器)

<1>简介

 LinearLayout是线性布局控件,它包含的子控件将以横向或竖向的方式排列,按照相对位置来排列所有的widgets或者其他的containers,超过边界时,某些控件将缺失或消失。因此一个垂直列表的每一行只会有一个widget或者是container,而不管他们有多宽,而一个水平列表将会只有一个行高(高度为最高子控件的高度加上边框高度)。LinearLayout保持其所包含的widget或者是container之间的间隔以及互相对齐(相对一个控件的右对齐、中间对齐或者左对齐)。

android:id  ——为控件指定相应的ID
     android:text —— 指定控件当中显示的文字,需要注意的是,这里尽量使用strings.xml文件当中的字符串
     android:grivity —— 指定控件的基本位置,比如说居中,居右等位置
     android:textSize—— 指定控件当中字体的大小
     android:background—— 指定该控件所使用的背景色,RGB命名法 
      android:width —— 指定控件的宽度
     android:height —— 指定控件的高度
    android:padding*—— 指定控件的内边距,也就是说控件当中的内容
     android:sigleLine—— 如果设置为真的话,则将控件的内容在同一行当中进行显示

<2>关键步骤

1、           编写线性布局相关的布局xml文件

2、           编写计算器的逻辑处理Activity

3、           修改AndroidManifest等配置文件

<3>出现的问题

       1、问题描述:

当新建一个布局xml文件后,在R.java文件中也能找到该xml文件,但是在Activity中提示错误。

      解决方法:

原因是import的是android.R.  这是系统用的标准库,不是你APP自己的库。把import android.R;删掉,重新import包含你app的Package名的R就可以了。

 

<4>代码及解释

       效果图:

ButtonActivity.java:

public class ButtonActivity extends Activity{
	int[] button = new int[]{
			R.id.button1, R.id.button2 , R.id.button3 , R.id.button4 , R.id.button5 , R.id.button6 ,
			R.id.button7, R.id.button8 , R.id.button9 , R.id.button0
	};
	Button buttonadd , buttonmin , buttonmul , buttondiv , buttonequ , buttonc;
	TextView tv;
	String str1 = null;
	String str2 = null;
	int result,result0 ,result1;
	int flag = 0;
	Button temp;
	
	public void initButton()
	{		
		buttonc = (Button)this.findViewById(R.id.buttonc);
		buttonadd = (Button)this.findViewById(R.id.buttonadd);
		buttonmin = (Button)this.findViewById(R.id.buttonmin);
		buttonmul = (Button)this.findViewById(R.id.buttonmul);
		buttondiv = (Button)this.findViewById(R.id.buttondiv);
		buttonequ = (Button)this.findViewById(R.id.buttonequ);
		tv = (TextView)this.findViewById(R.id.textView1);
	}
	
	public void buttonListener(Button button , final int id)
	{
		button.setOnClickListener(
				new OnClickListener()
				{
					@Override
					public void onClick(View v) {
						// TODO Auto-generated method stub
						String str = tv.getText().toString().trim();
						result0 = Integer.parseInt(str);
						tv.setText("");
						flag = id;
					}						
				}
			);
		
	}
	
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_button);
		initButton();
		buttonc.setOnClickListener(
				new OnClickListener()
				{
					public void onClick(View v)
					{
						str1 = "";
						str2 = "";
						tv.setText(str1);
						flag = 0;
						//Toast.makeText(ButtonActivity.this, "click", Toast.LENGTH_LONG).show();
					}
				});
		for(int i = 0 ; i < 10 ; i++)
		{
			temp = (Button)findViewById(button[i]);
			temp.setOnClickListener(
					new OnClickListener()
					{
						@Override
						public void onClick(View v) {
							// TODO Auto-generated method stub
							str1 = tv.getText().toString().trim();
							str1 = str1 + ((Button)v).getText();
							tv.setText(str1);
						}						
					}
				);
		}
		
		buttonListener(buttonadd , 1);
		buttonListener(buttonmin , 2);
		buttonListener(buttonmul , 3);
		buttonListener(buttondiv , 4);
		
		buttonequ.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				result1 = Integer.parseInt(str1);
				if(flag==1)
    	        {
    	        	result=result0+result1;
    	        	System.out.println(result0+":"+result1);
    	        }else if(flag==2)
    	        {
    	        	result=result0-result1;
    	        }else if(flag==3)
    	        {
    	        	result=result0*result1;
    	        }else if(flag==4)
    	        {
    	        	result=(int)(result0/result1);
    	        }
    			String str=(result+"").trim();
    			System.out.println(str);
    			tv.setText(str);
			}			
		});		
	}
}
Activity_linear.xml:
<?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" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:textSize="30dip"
        android:layout_gravity="right"
        android:layout_height="wrap_content"
        android:text="0" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/button7"
            android:layout_height="wrap_content"
            android:layout_width = "80dip"
            android:text="7" />

        <Button
            android:id="@+id/button8"
            android:layout_height="wrap_content"
            android:layout_width = "80dip"
            android:text="8" />

        <Button
            android:id="@+id/button9"
            android:layout_height="wrap_content"
            android:layout_width = "80dip"
            android:text="9" />

        <Button
            android:id="@+id/buttonadd"
            android:layout_height="wrap_content"
            android:layout_width = "80dip"
            android:text="+" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/button4"
            android:layout_height="wrap_content"
            android:layout_width = "80dip"
            android:text="4" />

        <Button
            android:id="@+id/button5"
            android:layout_height="wrap_content"
            android:layout_width = "80dip"
            android:text="5" />

        <Button
            android:id="@+id/button6"
            android:layout_height="wrap_content"
            android:layout_width = "80dip"
            android:text="6" />

        <Button
            android:id="@+id/buttonmin"
            android:layout_height="wrap_content"
            android:layout_width = "80dip"
            android:text="-" />

    </LinearLayout>
    
        <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/button1"
            android:layout_height="wrap_content"
            android:layout_width = "80dip"
            android:text="1" />

        <Button
            android:id="@+id/button2"
            android:layout_height="wrap_content"
            android:layout_width = "80dip"
            android:text="2" />

        <Button
            android:id="@+id/button3"
            android:layout_height="wrap_content"
            android:layout_width = "80dip"
            android:text="3" />

        <Button
            android:id="@+id/buttonmul"
            android:layout_height="wrap_content"
            android:layout_width = "80dip"
            android:text="*" />

    </LinearLayout>
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/button0"
            android:layout_height="wrap_content"
            android:layout_width = "80dip"
            android:text="0" />

        <Button
            android:id="@+id/buttonc"
            android:layout_height="wrap_content"
            android:layout_width = "80dip"
            android:text="c" />

        <Button
            android:id="@+id/buttonequ"
            android:layout_height="wrap_content"
            android:layout_width = "80dip"
            android:text="=" />

        <Button
            android:id="@+id/buttondiv"
            android:layout_height="wrap_content"
            android:layout_width = "80dip"
            android:text="/" />

    </LinearLayout>
	
</LinearLayout>




  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值