Android Button

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>

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>

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>
*******************************************************
给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>
**************************************************************
给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;
  }
 
 }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值