android 学习:
button布局
<RelativeLayout xmlns:android="
http://schemas.android.com/apk/res/android"
xmlns:tools=" http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.kn_day03_1_button.MainActivity" >
<!-- 当按钮显示的是纯文字的时候,只需要设置
android:text属性即可
-->
<Button android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="10dp"
android:layout_marginLeft="20dp"
android:layout_marginStart="20dp"
android:text="text button" />
<!-- 当Button只显示一张纯图片的时候
android:background 设置button上要显示的图片
纯图片的时候,除了使用Button之外,也可以使用ImageButtuon-->
<Button android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn1"
android:layout_alignRight="@+id/btn1"
android:layout_alignEnd="@+id/btn1"
android:layout_marginTop="10dp"
android:layout_marginLeft="30dp"
android:layout_marginStart="30dp"
android:background="@drawable/ic_launcher"
/>
<!--
当想要让button既显示文字 又显示图片的时候
1.图片和文字的位置关系是:文字覆盖在图片的上方
android:backround + android:text属性
-->
<Button android:id="@+id/btn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn2"
android:layout_alignRight="@+id/btn2"
android:layout_alignEnd="@+id/btn2"
android:layout_marginTop="10dp"
android:background="@drawable/ic_launcher"
android:text="textpic buttion"
android:textColor="#f00"
/>
<!--
当想要让button又显示又显示图片的时候
2.图片和文字的位置关系,图片显示在文字的周围的时候
android:text + android:drawable***
***代表4个方向
-->
<Button android:id="@+id/btn4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn3"
android:layout_alignRight="@+id/btn3"
android:layout_alignEnd="@+id/btn3"
android:layout_marginTop="10dp"
android: drawableTop ="@drawable/ic_launcher"
android:text="text below pic button"
/>
<!-- 当想要让设置了背景的button也具备这种点击和未点击时的区分效果的话,
需要自己去设置,设置方式:
在drawable文件夹下创建xml文件,xml文件的跟标签是selector
将这个xml文件看做一个图片资源设置给背景
-->
<Button android:id="@+id/btn5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn4"
android:layout_alignRight="@+id/btn2"
android:layout_alignEnd="@+id/btn2"
android:layout_marginTop="10dp"
android:drawableTop="@drawable/ btn_bg "
/>
</RelativeLayout>
xmlns:tools=" http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.kn_day03_1_button.MainActivity" >
<!-- 当按钮显示的是纯文字的时候,只需要设置
android:text属性即可
-->
<Button android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="10dp"
android:layout_marginLeft="20dp"
android:layout_marginStart="20dp"
android:text="text button" />
<!-- 当Button只显示一张纯图片的时候
android:background 设置button上要显示的图片
纯图片的时候,除了使用Button之外,也可以使用ImageButtuon-->
<Button android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn1"
android:layout_alignRight="@+id/btn1"
android:layout_alignEnd="@+id/btn1"
android:layout_marginTop="10dp"
android:layout_marginLeft="30dp"
android:layout_marginStart="30dp"
android:background="@drawable/ic_launcher"
/>
<!--
当想要让button既显示文字 又显示图片的时候
1.图片和文字的位置关系是:文字覆盖在图片的上方
android:backround + android:text属性
-->
<Button android:id="@+id/btn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn2"
android:layout_alignRight="@+id/btn2"
android:layout_alignEnd="@+id/btn2"
android:layout_marginTop="10dp"
android:background="@drawable/ic_launcher"
android:text="textpic buttion"
android:textColor="#f00"
/>
<!--
当想要让button又显示又显示图片的时候
2.图片和文字的位置关系,图片显示在文字的周围的时候
android:text + android:drawable***
***代表4个方向
-->
<Button android:id="@+id/btn4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn3"
android:layout_alignRight="@+id/btn3"
android:layout_alignEnd="@+id/btn3"
android:layout_marginTop="10dp"
android: drawableTop ="@drawable/ic_launcher"
android:text="text below pic button"
/>
<!-- 当想要让设置了背景的button也具备这种点击和未点击时的区分效果的话,
需要自己去设置,设置方式:
在drawable文件夹下创建xml文件,xml文件的跟标签是selector
将这个xml文件看做一个图片资源设置给背景
-->
<Button android:id="@+id/btn5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btn4"
android:layout_alignRight="@+id/btn2"
android:layout_alignEnd="@+id/btn2"
android:layout_marginTop="10dp"
android:drawableTop="@drawable/ btn_bg "
/>
</RelativeLayout>
btn_bg
.xml内容如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android=" http://schemas.android.com/apk/res/android" >
<!-- selector 背景选择器
特点:自动根据当前情况去选择相应的要显示的图片
创建item标签,标签中去设置当前的状态,以及此状态下对应要显示那张图
-->
<!-- 代表按钮被点击 -->
<item android:state_pressed="true" android:drawable="@drawable/pic6"></item>
<!-- 按钮没有被点击 -->
<item android:state_pressed="false" android:drawable="@drawable/pic7"></item>
</selector>
<selector xmlns:android=" http://schemas.android.com/apk/res/android" >
<!-- selector 背景选择器
特点:自动根据当前情况去选择相应的要显示的图片
创建item标签,标签中去设置当前的状态,以及此状态下对应要显示那张图
-->
<!-- 代表按钮被点击 -->
<item android:state_pressed="true" android:drawable="@drawable/pic6"></item>
<!-- 按钮没有被点击 -->
<item android:state_pressed="false" android:drawable="@drawable/pic7"></item>
</selector>
button 点击事件
给Button设置点击事件的方式一
public class MainActivity extends Activity {
/*
* Button 按钮
* 可以显示一些文字,可以显示一张图片,或者说显示文字加图片,
* 被点击并给予回应的效果
*
* 需求:
* 页面上显示一个TextView,一个Button
* 每当点击Button之后,TextView上显示的文字要加加
*
* 获取Button被点击的时候,--设置Button的点击监听事件
* 方式:
* 一:
* 在xml布局文件中,给Button设置一个onClick属性
* 属性值的设置:任意字符串 (点击方法的名称)
*
* 在当前的页面处理类,即Activity的子类中
* 自定义一个方法,要求有以下几点:
* 1.
该方法的方法名必须与onClick属性的属性值(点击方法的名称)完全一致
* 2.
该方法的访问修饰符和返回值类型必须是public void
* 3.
该方法必须定义一个参数列表,要求参数列表中有且只能有一个View类型的参数
*
* 当定义的方法满足以上3条条件的时候,每当点击按钮的时候都会运行此方法
*
* */
TextView tv1=null;
int num = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout
.clickbtn
);
tv1 = (TextView)findViewById(R.id.textview1);
System.out.println(""+tv1.getText());
}
public void btn_add(View view){
num++;
/*
* 注意:当要让TextView上显示自定义的int数值时,必须将此值转成String
* 类型再去显示
*
* 原因:系统默认当setText方法的参数是int值,默认认为此int是R中的int值
* 即会将此int值当做资源文件的id去进行查找,我们通常自定义的1,2,等数字在R中肯定
* 没有对应的资源,因此,抛出一个ResourceNotFoundException
* */
tv1.setText(num+"");
}
public void btn_minus(View view){
num--;
tv1.setText(num+"");
}
}
clickbtn.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android=" http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView android:id="@+id/textview1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="30dp"
android:layout_marginStart="30dp"
android:layout_marginTop="30dp"
android:text="0"
/>
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textview1"
android:layout_alignStart="@+id/textview1"
android:layout_below="@+id/textview1"
android:layout_marginTop="23dp"
android:onClick="btn_add"
android:text="自增" />
<Button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/btn1"
android:layout_alignStart="@+id/btn1"
android:layout_below="@+id/btn1"
android:layout_marginTop="23dp"
android:onClick="btn_minus"
android:text="自减" />
</RelativeLayout>
<RelativeLayout xmlns:android=" http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView android:id="@+id/textview1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="30dp"
android:layout_marginStart="30dp"
android:layout_marginTop="30dp"
android:text="0"
/>
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textview1"
android:layout_alignStart="@+id/textview1"
android:layout_below="@+id/textview1"
android:layout_marginTop="23dp"
android:onClick="btn_add"
android:text="自增" />
<Button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/btn1"
android:layout_alignStart="@+id/btn1"
android:layout_below="@+id/btn1"
android:layout_marginTop="23dp"
android:onClick="btn_minus"
android:text="自减" />
</RelativeLayout>
*******************************************************
给Button设置点击事件的方式二
public class ButtonOnclick extends Activity {
/*
* 给Button设置点击事件的方式二:
*
* */
int num = 0;
TextView textview1;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.onclickbtn);
textview1 = (TextView)findViewById(R.id.textview1);
Button btn_add = (Button)findViewById(R.id.btn_add);
Button btn_minus = (Button)findViewById(R.id.btn_minus);
//给button设置点击事件
btn_add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
num++;
textview1.setText(""+num);
}
});
//那么都会运行BtnOnClick类中的onClick方法
btn_minus.setOnClickListener(new BtnOnClick());
}
class
BtnOnClick implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
num--;
textview1.setText(""+num);
}
}
}
onclickbtn.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android=" http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView android:id="@+id/textview1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="30dp"
android:layout_marginLeft="30dp"
android:layout_marginStart="30dp"
android:text="0"
/>
<Button android:id="@+id/btn_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textview1"
android:layout_alignStart="@+id/textview1"
android:layout_marginTop="30dp"
android:layout_below="@+id/textview1"
android:text="自增"/>
<Button android:id="@+id/btn_minus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textview1"
android:layout_alignStart="@+id/textview1"
android:layout_marginTop="30dp"
android:layout_below="@+id/btn_add"
android:text="自减"/>
</RelativeLayout>
<RelativeLayout xmlns:android=" http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView android:id="@+id/textview1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="30dp"
android:layout_marginLeft="30dp"
android:layout_marginStart="30dp"
android:text="0"
/>
<Button android:id="@+id/btn_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textview1"
android:layout_alignStart="@+id/textview1"
android:layout_marginTop="30dp"
android:layout_below="@+id/textview1"
android:text="自增"/>
<Button android:id="@+id/btn_minus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textview1"
android:layout_alignStart="@+id/textview1"
android:layout_marginTop="30dp"
android:layout_below="@+id/btn_add"
android:text="自减"/>
</RelativeLayout>
**************************************************************
给Button设置点击事件的方式三
public class ButtonOnClick3 extends Activity implements OnClickListener {
/*给Button设置点击事件的方式三*/
int num = 0;
TextView textview1;
Button btn_add;
Button btn_minus;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.onclickbtn);
textview1 = (TextView)findViewById(R.id.textview1);
btn_add = (Button)findViewById(R.id.btn_add);
btn_minus = (Button)findViewById(R.id.btn_minus);
btn_add.setOnClickListener(this);
btn_minus.setOnClickListener(this);
};
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// 通过getId方法获取当前被点击对象的id值
switch (v.getId()) {
case R.id.btn_add:
num++;
textview1.setText("" + num);
/*
* 在Android中输出推荐使用
* Log.i的方法
* 参数一:自定义的字符串,描述当前输出的Tag信息?
* 参数 二:自定义的字符串,代表要输出的信息
* 稍后再LogCat窗口中输出的时候,
* 参数一显示在Tag标签下,参数二显示在Text标签下
*
* 实现LogCat过滤的方式:
* 点击旁边的+号,添加相应的过滤条件
* */
Log.i("====", "num ======= "+num);
break;
case R.id.btn_minus:
num--;
textview1.setText("" + num);
break;
default:
num = 0;
textview1.setText("" + num);
break;
}
}
}