gpt4 book ai didi

java - 设置tablerow元素的权重

转载 作者:行者123 更新时间:2023-12-01 05:15:22 25 4
gpt4 key购买 nike

我正在尝试以编程方式设置表行中 TextView 和复选框的权重。经过一番研究,我发现 LayoutParams 的第三个参数用于执行此操作。然而,它似乎不起作用。有人可以看一下这段代码并看看问题出在哪里吗?谢谢。 (使用 LinearLayout 建议进行编辑)

public LayerSelectorView(Context context) 
{
super(context);
this.context = context;
float density = context.getResources().getDisplayMetrics().density;

linearLayout = new LinearLayout(context);
linearLayout.setOrientation(LinearLayout.VERTICAL);
final LinearLayout.LayoutParams mainParams = new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
linearLayout.setLayoutParams(mainParams);

titleText = new TextView(context);
titleText.setTextAppearance(context, android.R.style.TextAppearance_Large);
titleText.setText("Select Layers");
titleText.setTextColor(Color.WHITE);
titleText.setId(id);

final LinearLayout.LayoutParams titleParams = new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
titleParams.setMargins(20, 20, 0, 0);
titleText.setLayoutParams(titleParams);

linearLayout.addView(titleText);
}
public void updateView()
{
overlays = ((MapActivity)context).getMapView().getOverlays();

loadLayers();

this.addView(linearLayout);

linearLayout.setBackgroundColor(0x88000000);
linearLayout.invalidate();
this.invalidate();
}
public void loadLayers()
{
TableLayout table = new TableLayout(context);
final LinearLayout.LayoutParams tableParams = new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
table.setLayoutParams(tableParams);
int i = id+1;
for(final MapOverlay mo: overlays)
{
TableRow tblRow = new TableRow(context);

TextView layer = new TextView(context);
TableRow.LayoutParams trParams = new TableRow.LayoutParams(0,
LayoutParams.FILL_PARENT, 1f);
layer.setTextAppearance(context, android.R.style.TextAppearance_Large);
layer.setText(mo.getName());
layer.setTextColor(Color.WHITE);
layer.setId(i);
i++;
layer.setLayoutParams(trParams);

final CheckBox chk = new CheckBox(context);
TableRow.LayoutParams trParams1 = new TableRow.LayoutParams(0,
LayoutParams.FILL_PARENT, .2f);
chk.setLayoutParams(trParams1);
chk.setFocusable(false);
chk.setClickable(false);
chk.setChecked(true);

tblRow.addView(layer);
tblRow.addView(chk);
table.addView(tblRow);

tblRow.setOnClickListener(new OnClickListener(){

public void onClick(View v) {
if(mo.isVisible())
{
mo.setVisible(false);
chk.setChecked(false);
}
else
{
mo.setVisible(true);
chk.setChecked(true);
}
}
});
}
linearLayout.addView(table);
}

最佳答案

您不能将权重与RelativeLayout一起使用。您需要使用LinearLayout。我不知道这是否对你有用,但我希望它仍然有帮助。

关于java - 设置tablerow元素的权重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11298503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com