Android 之Java動態生成View

LayoutInflate & LayoutParams (tip)

一、LayoutInflate

除過setContentView()用于Activity加載布局,就要使用LayoutInflate

ViewGroup viewGroup = (ViewGroup) LayoutInflater.from(this).inflate(R.layout.activity_main, null);

詳解:Android 通過Java代碼生成創建界面。動態生成View,動態設置View屬性。addRules詳解

二、LayoutParams

詳解:Android中LayoutParams總結和用法

RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams(100,100); 
RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);

注:單位是px

public class MainActivity extends Activity implements View.OnClickListener{

    private static final String TAG = "MainActivity";
    private   LinearLayout ll_one;
    private HashMap<Integer, Button> btnMap = null;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnMap = new HashMap<Integer, Button>();

        ll_one = findViewById(R.id.ll_one);

        for (Integer i = 0; i < 6; i++) {
            Button button1 = new Button(ll_one.getContext());
            button1.setText("button"+i);
            button1.setTag(i);
            button1.setTextColor(Color.GREEN);
            button1.setOnClickListener(this);

            LinearLayout.LayoutParams btnParams = new LinearLayout.LayoutParams(300, 120);
            button1.setLayoutParams(btnParams);

            ll_one.addView(button1);
            btnMap.put(i,button1);
        }
    }

    @Override
    public void onClick(View view) {
        Log.d(TAG, "onClick: "+view.getTag());

        Button button = btnMap.get((Integer) view.getTag());
        button.setBackgroundColor(Color.RED);

        switch ((Integer) view.getTag()){
            case 0:
                Log.d(TAG, "ss onClick: "+view.getTag());
                break;
            case 1:
                Log.d(TAG, "ss onClick: "+view.getTag());
                break;
            case 2:
                Log.d(TAG, "ss onClick: "+view.getTag());
                break;

        }

    }
}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,334評論 25 708
  • ¥開啟¥ 【iAPP實現進入界面執行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,523評論 0 17
  • 介紹自己負責的部分,如何實現的。 框架的搭建排查問題以及結解決方式兼容性保證性能優化上線之后模塊導致crash的比...
    黃海佳閱讀 13,239評論 6 350
  • 今年的秋 終于還是來了 今年來得比往年晚很多 昨日 太陽還似夏日般灼熱 今晚 秋風吹起 多了些許涼意
    非非心閱讀 210評論 0 0
  • 晚上和媳婦兒聊天,視頻。媳婦兒心疼流量,說后天就可以見面了。我撇嘴,還要后天呢。媳婦兒說一個月都等了,...
    七根閱讀 175評論 0 1