1. 程式人生 > >動態載入佈局時設定LinearLayout中的View的權重

動態載入佈局時設定LinearLayout中的View的權重

在寫程式時遇到這麼一個問題.

根據數量的多少動態載入LinearLayout的個數,每個LinearLayout內部是橫向排列的三個TextView,要讓每個TextView中的文字居中顯示,三個TextView還要平均分佈佔滿整個螢幕的寬度,即用JAVA程式碼設定每個TextView的android:layout_weight屬性,再網上查詢了資料之後,終於解決,現在做個記錄.

goodLayout.removeAllViews();
        //根據商品數量,動態生成佈局
        for(int i=0;i<goodList.size();i++){
            //生成三個TextView
            TextView tv1=new TextView(this);
            TextView tv2=new TextView(this);
            TextView tv3=new TextView(this);
            //文字居中
            tv1.setGravity(Gravity.CENTER);
            tv2.setGravity(Gravity.CENTER);
            tv3.setGravity(Gravity.CENTER);
            tv1.setTextSize(16f);
            tv2.setTextSize(16f);
            tv3.setTextSize(16f);
            //設定權重
            tv1.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT,1.0f));
            tv2.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT,1.0f));
            tv3.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT,1.0f));
            //設定內容
            tv1.setText(goodList.get(i).getCat_name());//專案
            tv2.setText(goodList.get(i).getTitle());
            if(goodList.get(i).getMarkup().equals("1")){
                //加價
                tv3.setText(goodList.get(i).getMarkup_price()+"元");
                tv3.setTextColor(getResources().getColor(R.color.textred));
            }else{
                //不加價
                tv3.setText("否");
            }
            //每一行的屬性
            LinearLayout ll=new LinearLayout(this);
            ll.setLayoutParams(new ViewGroup.LayoutParams(LinearLayoutCompat.LayoutParams.MATCH_PARENT,LinearLayoutCompat.LayoutParams.WRAP_CONTENT));
            ll.setOrientation(LinearLayout.HORIZONTAL);
            ll.addView(tv1);
            ll.addView(tv2);
            ll.addView(tv3);
            goodLayout.addView(ll);
        }