📅  最后修改于: 2023-12-03 15:13:20.278000             🧑  作者: Mango
In Android, you can set the weight of a TextView programmatically to adjust its size relative to other Views in a layout. This can be useful when creating responsive layouts that adjust to different screen sizes and resolutions.
To set the weight of a TextView programmatically, you can use the LayoutParams
class. First, you need to create an instance of this class with the width and height set to WRAP_CONTENT
.
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT
);
Next, you can set the weight of the TextView using the weight
property of the LayoutParams
class.
params.weight = 1;
Finally, you can apply the new LayoutParams
to the TextView using the setLayoutParams()
method.
textView.setLayoutParams(params);
Here's an example of setting the weight of a TextView programmatically in a LinearLayout.
// Create a LinearLayout
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
layout.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT
));
// Create three TextViews and add them to the LinearLayout
TextView textView1 = new TextView(this);
textView1.setText("TextView 1");
LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT
);
params1.weight = 1;
textView1.setLayoutParams(params1);
layout.addView(textView1);
TextView textView2 = new TextView(this);
textView2.setText("TextView 2");
LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT
);
params2.weight = 2;
textView2.setLayoutParams(params2);
layout.addView(textView2);
TextView textView3 = new TextView(this);
textView3.setText("TextView 3");
LinearLayout.LayoutParams params3 = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT
);
params3.weight = 3;
textView3.setLayoutParams(params3);
layout.addView(textView3);
// Set the LinearLayout as the content view for the activity
setContentView(layout);
In this example, we create a LinearLayout with three TextViews, each with a different weight. The TextView with weight 1 will take up 1/6th of the screen, the TextView with weight 2 will take up 2/6ths, and the TextView with weight 3 will take up 3/6ths.
Setting the weight of a TextView programmatically can be a useful way to create responsive layouts in Android. By using the LayoutParams
class, you can adjust the size of Views relative to each other based on their weight.