Android 笔记之动态创建button 一行三列

 

Android 笔记之动态创建button 一行三列

 

package com.example.mytest2;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.Toast;

 

 

 

 

 

/**

的Activity

**/

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
      //获取屏幕大小,以合理设定 按钮 大小及位置
        DisplayMetrics dm = new DisplayMetrics();
         getWindowManager().getDefaultDisplay().getMetrics(dm);
         int width = dm.widthPixels;
         int height = dm.heightPixels;

       //自定义layout组件
        RelativeLayout layout = new RelativeLayout(this);       

       //这里创建17个按钮,每行放置4个按钮
        Button Btn[] = new Button[17];
         int j = -1;
         int f = Btn.length;
         for  (int i=0; i<=Btn.length-1; i++) {    
               Btn[i]=new Button(this);
               Btn[i].setId(2000+i);
               Btn[i].setText("按钮"+i); 
               RelativeLayout.LayoutParams btParams = new RelativeLayout.LayoutParams ((width-50)/3,150); 
               //设置按钮的宽度和高度
              if (i%3 == 0) {
                j++;
               }
             
              f--;
              if(f<3){


               if (i%3 == 2 && i%3 == 1) {//最后一行不是3个,是2个,或者是1个,就无法整除,就会报错。加了这一个判断之后就会消除错误
                      j++;
                     }
              /*  if (i%3 == 1) {
                      j++;
                     }*/
              }
               btParams.leftMargin = 20+ ((width-50)/3+20)*(i%3);   //横坐标定位      
               btParams.topMargin = 20 + 5*55*j;   //纵坐标定位     
               layout.addView(Btn[i],btParams);   //将按钮放入layout组件
        }
            this.setContentView(layout); //替换之前的布局,要是有自定义了布局的话,就要记得将这句话注视掉
           //批量设置监听

        for (int k = 0; k <= Btn.length-1; k++) {
          //这里不需要findId,因为创建的时候已经确定哪个按钮对应哪个Id
          Btn[k].setTag(k);                //为按钮设置一个标记,来确认是按下了哪一个按钮

         Btn[k].setOnClickListener(new Button.OnClickListener() {
           @Override
               public void onClick(View v) {
                   int i = (Integer) v.getTag();
                   //这里的i不能在外部定义,因为内部类的关系,内部类好多繁琐的     东西,要好好研究一番
                  
                   Toast.makeText(getApplicationContext(), "d:"+i, Toast.LENGTH_SHORT).show();

              }
            });
          }

    }


}

 

 效果图如下:

一起来那么


 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值