Android之activity中新建控件

Posted 根坤

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android之activity中新建控件相关的知识,希望对你有一定的参考价值。

了解了5大布局,我们会发现这些布局都是静态的,如何让系统自动生成控件呢?这就需要activity来帮忙了

  今天我们讲的就是用activity新建布局

  用案例来说吧!

  实现一个输入行和列自动生成表格并生成背景颜色

  效果如图

    

 

  代码如下:

  

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" 
         >


        <EditText
            
            android:id="@+id/text_row"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="left|top"
            android:ems="10"
            android:hint="@string/text_row"
            android:inputType="number">

            <requestFocus />
        </EditText>

        <EditText
            android:id="@+id/text_column"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="left|top"
            android:ems="10"
            android:hint="@string/text_column"
            android:inputType="number"
          />
        
        <Button
            android:id="@+id/btn_commit"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical|center_horizontal"
            android:text="@string/btn_commit"
            />
       </LinearLayout>

     <TableLayout
        android:layout_weight="1"
        android:id="@+id/tablelayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

      
        
    </TableLayout>

</LinearLayout>

 

 1 package com.example.linearlayout;
 2 
 3 import android.app.Activity;
 4 import android.graphics.Color;
 5 import android.os.Bundle;
 6 import android.view.Menu;
 7 import android.view.MenuItem;
 8 import android.view.View;
 9 import android.view.View.OnClickListener;
10 import android.widget.Button;
11 import android.widget.LinearLayout;
12 import android.widget.TableLayout;
13 import android.widget.TableRow;
14 import android.widget.TextView;
15 import android.widget.Toast;
16 
17 
18 public class MainActivity extends Activity {
19     private TextView text_column;
20     private TextView  text_row ;
21     private TableLayout tabLay;
22     private int length = 64;
23     @Override
24     protected void onCreate(Bundle savedInstanceState) {
25         super.onCreate(savedInstanceState);
26         setContentView(R.layout.layout2);
27        //获取控件按钮
28        Button btn_commit = (Button) findViewById(R.id.btn_commit);
29        
      //获取控件textview 30 text_column = (TextView) findViewById(R.id.text_column); 31 text_row= (TextView) findViewById(R.id.text_row); 32 33 //给按钮设置点击事件 34 btn_commit.setOnClickListener(new OnClickListener(){ 35 36 @Override 37 public void onClick(View v) { 38   

              //获取文本值 39 String column = text_column.getText().toString().trim(); 40 String row = text_row.getText().toString().trim(); 41    //判断是否为空 42 if(column.length() != 0 && row.length() != 0){ 43 //获取控件布局 44 tabLay= (TableLayout) findViewById(R.id.tablelayout); 45 46 //先清空 47 tabLay.removeAllViewsInLayout(); 48 tabLay.setStretchAllColumns(true); 49 //强转整型 50 int x =Integer.parseInt(text_column.getText().toString()); //?? 51 int y =Integer.parseInt(text_row.getText().toString()); 52 53 54   //for循环嵌套 55 for(int m = 0 ; m < y; m++ ){ 56 57 TableRow tr = new TableRow(MainActivity.this); 58 59 for(int n = 0 ; n < x ; n++ ){ 60 61 TextView tv = new TextView(MainActivity.this); 62 63 //tv.setText("("+n+","+m+")"); 64 tv.setText(" "); 65 tr.addView(tv); 66   //获取参数,设置背景颜色值 67 int result = m*n +2*n-1; 68 int red = result / 16/16 ; 69 int green = ( result - red*16*16)/16; 70 int blue = result - red*16*16 - green*16; 71 72 tv.setBackgroundColor(Color.rgb(red*16, green*16, blue*16)); 73 74 75 } 76 tabLay.addView(tr); 77 78 } 79 80 }else{ 81 Toast.makeText(MainActivity.this,"请输入行和列",1).show(); 82 } 83 } 84 }); 85 86 } 87 }

 

    

以上是关于Android之activity中新建控件的主要内容,如果未能解决你的问题,请参考以下文章

如何膨胀由 Android Studio 向导在 Activity 中创建的片段(列表)?

Android Studio新建Activity

Android自助餐之自定义控件从layout自定义控件

在activity中使用menu

怎么实现Android的Spinner控件不可编辑

android开发系列之使用xml自定义控件