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 }

    

时间: 2024-10-17 16:41:57

Android之activity中新建控件的相关文章

Android在onCreate()中获得控件尺寸

@Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        final ImageView imageView = (ImageView) findViewById(R.id.imageview);              int w = View.Mea

Android在OnCreate中获取控件的宽度和高度

原文链接:http://www.cnblogs.com/wt616/archive/2012/05/11/2496180.html 在Android中,有时需要对控件进行测量,得到的控件宽度和高度可以用来做一些计算.在需要自适应屏幕的情况下,这种计算就显得特别重要.另一方便,由于需求的原因,希望一进入界面后,就能得到控件的宽度和高度. 可惜的是,根据我的验证,利用网上转载的那些方法在OnCreate函数中获取到的仍然是0(希望搞技术的能自己验证过再转载),例如Measure方法之后调用getMe

Android在onCreate中获取控件的宽高

在某些需求下,我们需要在onCreate的时候就获取到控件的宽高,但是如果直接用view.getWidth()或view.getHeight()会得到0.这是因为在onCreate执行的时候,控件还没有被绘制出来. 利用下面的方法可以获得控件的宽高: ViewTreeObserver vto = zoomImageView.getViewTreeObserver(); vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener(

activity 中获取控件的宽高

1.第一种方式: TextView textview3 = findViewById(R.id.textview3); textView3.post(new Runnable() { @Override public void run () { int width = textView3.getWidth(); ViewGroup.LayoutParams layoutParams = button2.getLayoutParams(); layoutParams.width = width;

android开发中一个activity如何调用另一个xml中的控件

有时候,我们需要在一个Activity中调用另一个xml布局文件,即非本Activity所绑定的xml布局文件中的控件,这时候就不能直接findViewById,不然会报错指向空对象,这时就需要像下面这样做. LayoutInflater factory = LayoutInflater.from(当前类.this); View layout = factory.inflate(R.layout.你要获取的另一个XML, null); TextView textview = (TextView)

android学习五(android中基本控件的使用)

前面已经学了activity的一些使用,那么下面我们进行android中基本的控件的学习和使用. 1.android中的TextView控件 新建一个项目,项目名为UITest,才有默认的设置,修改布局文件的内容,如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" a

Android自定义控件系列 十:利用添加自定义布局来搞定触摸事件的分发,解决组合界面中特定控件响应特定方向的事件

这个例子是比较有用的,基本上可以说,写完这一次,以后很多情况下,直接拿过来addView一下,然后再addInterceptorView一下,就可以轻轻松松的达到组合界面中特定控件来响应特定方向的触摸事件了. 请尊重原创劳动成果,转载请注明出处:http://blog.csdn.net/cyp331203/article/details/45198549,非允许请勿用于商业或盈利用途,违者必究. 在写Android应用的过程之中,经常会遇到这样的情况:界面包含了多个控件,我们希望触摸在界面上的不

Android中ExpandableListView控件基本使用

本文採用一个Demo来展示Android中ExpandableListView控件的使用,如怎样在组/子ListView中绑定数据源.直接上代码例如以下: 程序结构图: layout文件夹下的 main.xml 文件源代码例如以下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/a

Android中常用控件及属性

在之前的博客为大家带来了很多关于Android和jsp的介绍,本篇将为大家带来,关于Andriod中常用控件及属性的使用方法,目的方便大家遗忘时,及时复习参考.好了废话不多讲,现在开始我们本篇内容的介绍. 1.控制应用显示的方向: setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖直显示效果. setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LA