首先,我必须在运行时创建所有组件。好吧,我有一个TableLayout
,在这个表视图中有一堆TableRow
。在每个TableRow
内,应该有:
Button
具有给定的固定高度和给定的固定宽度TextView
填充TableRow
被允许包装其文字的“休息” TableRow
的高度应该是Button
高度和TableRow
高度的最大值。我要么无法设置Button
高度,要么只显示其中一个元素(TableRow
或Button
)。
也许有人可以帮助我。
我目前的代码:
// fetching the table layout
final TableLayout tl = (TableLayout) findViewById(R.id.ShoppingListTableLayout);
tl.removeAllViews();
// creating a single layout for every component
TableLayout.LayoutParams tableRowParams = new TableLayout.LayoutParams(
TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.MATCH_PARENT);
tableRowParams.setMargins(0, 1, 0, 1);
TableRow.LayoutParams bParams = new TableRow.LayoutParams(m_Resources
.getDimensionPixelSize(R.dimen.ButtonWidth), m_DefaultButtonHeight_px);
TableLayout.LayoutParams tvParams = new TableLayout.LayoutParams(
TableLayout.LayoutParams.MATCH_PARENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT);
Iterator<xy> itr = ...
while (itr.hasNext()) {
final xy = itr.next();
final TableRow tr = new TableRow(this);
tr.setLayoutParams(tableRowParams);
// 1. Child: TextView
final TextView CurrTxtView = new TextView(this);
CurrTxtView.setPadding(TV_PADDING_PX, TV_PADDING_PX, TV_PADDING_PX, TV_PADDING_PX);
CurrTxtView.setTextSize(TV_TEXT_SIZE);
CurrTxtView.setTypeface(m_Font);
CurrTxtView.setTextColor(TEXT_ACTIVE_COLOR);
CurrTxtView.setText(CurrItem.GetName());
CurrTxtView.setLayoutParams(tvParams);
tr.addView(CurrTxtView, CHILD_INDEX_TV);
// 2. Child Button ("Edit" für aktive, "Delete" für inaktive)
final Button MyButton = new Button(this);
MyButton.setTextColor(TEXT_ACTIVE_COLOR;
MyButton.setText(m_Resources.getString(CurrItem.GetIsActive() ? R.string.EditString
: R.string.DeleteString));
MyButton.setLayoutParams(bParams);
MyButton.setTypeface(m_Font);
MyButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{... }
});
tr.addView(MyButton, CHILD_INDEX_B);
tr.setPadding(m_TableRowPadding_px, 0, m_TableRowPadding_px, 0);
tr.setGravity(Gravity.CENTER_VERTICAL);
tl.addView(tr, 0);
}
在这种情况下,只显示按钮,左侧更差!
答案 0 :(得分:0)
假设您在正确的索引处添加TextView
和Button
(CHILD_INDEX_TV
和CHILD_INDEX_B
为0
和1
,尽管您可以放下它们,只是按照正确的顺序添加视图)布局中的一个坏处是你设置为LayoutParams
的{{1}},该视图没有显示:
TextView
首先,TableLayout.LayoutParams tvParams = new TableLayout.LayoutParams(
TableLayout.LayoutParams.MATCH_PARENT, android.view.ViewGroup.LayoutParams.WRAP_CONTENT);
是TextView
的孩子,所以你应该设置TableRow
而不是TableRow.LayoutParams
,其次我不明白为什么你突然决定离开TableLayout.LayoutParams
并转到TableLayout.LayoutParams
查看视图的高度。最后它应该是:
android.view.ViewGroup.LayoutParams
要将TableRow.LayoutParams tvParams = new TableRow.LayoutParams(
TableRow.LayoutParams.MATCH_PARENT,
TableRow.LayoutParams.WRAP_CONTENT);
向右推,您只需使用Button
拉伸列即可:
TextView