<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>