android 中通过代码创建控件

package bvb.de.openadbwireless.circle;

import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

public class AddViewByJava extends Activity {

    private Context context = this;
    private RelativeLayout rl_root;
    private TextView tv;

    @TargetApi(Build.VERSION_CODES.KITKAT)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 最外层的控件 RelativeLayout
        rl_root = new RelativeLayout(context);

        // 添加一个TextView
        tv = new TextView(context);
        RelativeLayout.LayoutParams tvLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
        // 设置 margin
        tvLayoutParams.leftMargin = 50;
        // 设置 padding
        tv.setPadding(10, 10, 10, 10);
        tv.setText("textView");
        tv.setLayoutParams(tvLayoutParams);
        rl_root.addView(tv);

        //添加一个按钮
        Button btn = new Button(context);
        btn.setText("button");
        // 设置规则 : 在TextView 的下方
        RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
        layoutParams.addRule(RelativeLayout.BELOW, tv.getId());
        btn.setLayoutParams(layoutParams);
        rl_root.addView(btn);
        btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                tv.setText(getChild());
            }
        });

        // 在Button 下面添加一个LinearLayout,里面水平放4个Button
        LinearLayout ll = new LinearLayout(context);
        RelativeLayout.LayoutParams layoutParams1 = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
        layoutParams1.addRule(RelativeLayout.BELOW, btn.getId());
        ll.setLayoutParams(layoutParams1);
        ll.setBackgroundColor(Color.GREEN);
        ll.setPadding(10, 50, 0, 0);
        rl_root.addView(ll);

        ll.setOrientation(LinearLayout.HORIZONTAL);
        int btnCount = 4;
        for (int i = 0; i < btnCount; i++) {
            final Button button = new Button(context);
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT));
            params.weight = 1;
            button.setText("button" + i);
            ll.addView(button, params);
            button.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    Toast.makeText(context, button.getText(), Toast.LENGTH_SHORT).show();
                }
            });
        }

        ListView lv = new ListView(context);
        RelativeLayout.LayoutParams layoutParams2 = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
        layoutParams2.addRule(RelativeLayout.BELOW, ll.getId());
        lv.setLayoutParams(layoutParams2);
        rl_root.addView(lv);
        List<String> datas = new ArrayList<String>();
        for (int i = 0; i < 20; i++) {
            datas.add("name" + i);
        }
        lv.setAdapter(new ArrayAdapter<String>(context, android.R.layout.simple_list_item_1, android.R.id.text1, datas));

        setContentView(rl_root);
    }

    public String getChild() {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < rl_root.getChildCount(); i++) {
            sb.append(rl_root.getChildAt(i).toString()).append("\n");
        }
        return sb.toString();
    }

}
时间: 2025-01-31 20:59:23

android 中通过代码创建控件的相关文章

Swift编程中字符转为类,代码创建控件详解

在swift编程(http://www.maiziedu.com/course/ios/16-161/)中,我们都会遇到这样两个问题,如何把字符转为类和代码创建控件的方法,下面就具体讲解这两个知识点 在使用类之前要先获得 命名空间 通过json来获取 字符型的类名 然后创建类对象,这时候就要用到字符转类 // 从info字典中获取到 命名空间 转为字符型 let NS = NSBundle.mainBundle().infoDictionary!["CFBundleExecutable"

android中常用的小控件------Widgets的使用

好久没有写博客了,都不知博客怎么写了,最近突然想写博客,以帮助更多的人,却又不知道写什么好呢? 好吧  我承认我有点懒惰了,可是程序猿是不应该懒惰的哦,俺要做个好孩子. 好了言归正传,开始介绍下今天的主要内容吧! Widgets一个桌面的小控件    个人认为是很常用的,不知道大神们是不是这么觉得的呢?比如说你开发的一款音乐播放器的软件,可把基本的上一曲和下一曲.暂停的几个功能放在这个小控件里面将它显示在桌面上来,这样就很方便啦,你想要下一曲.上一曲.暂停播放的时候,就不用再打开播放器了,而是直

swift 字符转为类,代码创建控件

在使用类之前要先获得 命名空间 通过json来获取 字符型的类名 然后创建类对象,这时候就要用到字符转类 // 从info字典中获取到 命名空间 转为字符型 let NS = NSBundle.mainBundle().infoDictionary!["CFBundleExecutable"] as! string let clss:AnyClass? = NSClassFormString(NS +"."+字符类名) let Vcla = clas as! UIV

swift学习笔记:字符转为类,代码创建控件

在swift编程(http://www.maiziedu.com/course/ios/16-161/)中,我们都会遇到这样两个问题,如何把字符转为类和代码创建控件的方法,下面就具体讲解这两个知识点 在使用类之前要先获得 命名空间 通过json来获取 字符型的类名 然后创建类对象,这时候就要用到字符转类 // 从info字典中获取到 命名空间 转为字符型 let NS = NSBundle.mainBundle().infoDictionary!["CFBundleExecutable"

android中一个评分的控件

RatingBar android中一个评分的控件 如何使用 Android Studio下: dependencies { compile 'com.hedgehog.ratingbar:app:1.0.2' } 1,在XML中 <com.hedgehog.ratingbar.RatingBar android:layout_marginTop="50dp" android:layout_gravity="center" android:id="@

代码创建图片轮换; 代码创建控件时,如何将控件定义成属性

代码创建图片播放 #import "ViewController.h" #define kLength 15 @interface ViewController () @property(nonatomic, weak)UIImageView *myImage; @property(nonatomic, weak)UILabel *myLabel; @property(nonatomic,weak) UISlider *mySlider; @end @implementation Vi

Android中的自定义视图控件

简介 当现有控件不能满足需求时,就需要自定义控件. 自定义控件属性 自定义控件首先要继承自View,重写两个构造函数. 第一个是代码中使用的: public MyRect(Context context) { super(context); } 另一个是资源解析程序使用的: public MyRect(Context context, AttributeSet attrs) { super(context, attrs); TypedArray ta = context.obtainStyled

Android中使用shape来定义控件

本文章转接于:http://kofi1122.blog.51cto.com/2815761/521605 Android中常常使用shape来定义控件的一些显示属性,今天看了一些shape的使用,对shape有了大体的了解,稍作总结: 先看下面的代码:        <shape>            <!-- 实心 -->            <solid android:color="#ff9d77"/>            <!--

Android中使用shape来定义控件的一些显示属性

本人在美工方面一直是比较白痴的,对于一些颜色什么乱七八糟的非常头痛,但是在Android编程中这又是经常涉及到的东西,没办法,只有硬着头皮上. Android中常常使用shape来定义控件的一些显示属性,今天看了一些shape的使用,对shape有了大体的了解,稍作总结: 先看下面的代码:        <shape>            <!-- 实心 -->            <solid android:color="#ff9d77"/>