本篇是說明如何動態產生控制項,

一般的控制項寫法是在.xml檔中直接拉控制項在畫面上,

可以動態產生的控制項的好處是,可以動態產生,也就可以動態刪除,

這一個範例是將TextVIEW, EditText以及Button,用addView()動態置入LinearLayout中,

MainActivity.java

package com.example.demoui;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MainActivity extends Activity {
    private TextView txtview;
    private EditText edittxt;
    private Button btn;;
    private LinearLayout llayout;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        llayout = (LinearLayout) findViewById(R.id.mainlayout);
        //程式碼中動態建立控制項
        txtview = new TextView(this);
        txtview.setText("demo ui code");
        //將控制項加入LinearLayout中,使用addView()
        llayout.addView(txtview);
        edittxt = new EditText(this);
        llayout.addView(edittxt);
        btn = new Button(this);
        btn.setText("Click me");
        llayout.addView(btn);
        //使用Button的SetOnCliclListener寫入按下按鈕時的動作內容
        btn.setOnClickListener(btnclick); //將onClick移到外面,讓程式看起來簡潔
        
    }
    
    Button.OnClickListener btnclick = new Button.OnClickListener(){
        @Override
        public void onClick(View view) {
            //將txtview的背景設成黃色
            txtview.setBackgroundColor(Color.YELLOW);
            //在editext中顯示文字
            edittxt.setText("Button is clicked");     
        }              
    };
}

activity_main.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    
    android:id="@+id/mainlayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

</LinearLayout>

手機螢幕顯示:

未按按鈕前

Screenshot_2013-10-29-01-24-28.jpg

按下按鈕後

Screenshot_2013-10-29-01-24-35.jpg

arrow
arrow
    全站熱搜

    fishark 發表在 痞客邦 留言(0) 人氣()