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>




發佈了29 篇原創文章 · 獲贊 4 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章