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