動態載入佈局時設定LinearLayout中的View的權重
阿新 • • 發佈:2019-01-01
在寫程式時遇到這麼一個問題.
根據數量的多少動態載入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); }