public class MainActivity extends AppCompatActivity {
private TextView tv1;
private TextView tv2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv1 = findViewById(R.id.tv1);
tv2 = findViewById(R.id.tv2);
//tv1设置权重是1
LinearLayout.LayoutParams weight1 = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f);
tv1.setLayoutParams(weight1);
tv1.setText("权重为1");
//tv2设置权重是1
LinearLayout.LayoutParams weight2= new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 2.0f);
tv2.setLayoutParams(weight2);
tv1.setText("权重为2");
}
}
在xml中使用权重特别需要的地方,在代码中动态设置时同样需要注意,即:
如果在给空间设置权重的时候,如果布局中设置的方向是horizontal,那么就在
LayoutParams(0,heignt,weight);
如果在给空间设置权重的时候,如果布局中设置的方向是vertical,那么就在
LayoutParams(width,0,weight).
另外在自定义view中 假如动态添加一个控件并权重分开 这个控件不要用其他控件包裹(linearlayout 等等) 控件就是一个主布局
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tv_head_view_click_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/shape_stroke_orange_semicircle"
android:gravity="center"
android:paddingLeft="20dp"
android:paddingTop="8dp"
android:paddingRight="20dp"
android:paddingBottom="8dp"
android:singleLine="true"
android:text="今天"
android:textColor="@color/colorAccent"
android:textSize="14sp" />