我正在用XML创建TableLayout:
<TableLayout
android:id="@+id/button_area"
android:layout_width="fill_parent"
android:layout_height="0px"
android:layout_weight="3">
然后我尝试向行添加按钮(复制&#34;包装面板的效果&#34; - 有点惊讶Android没有这个,但没关系):
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
TableLayout layout = (TableLayout) findViewById(R.id.button_area);
TableRow row = new TableRow(this);
row.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
for (int i = 0; i != 12; i++) {
Button b = new Button(this);
b.setText("something");
b.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT));
row.addView(b);
if (i + 1 % 4 == 0) {
layout.addView(row);
row = new TableRow(this);
}
}
}
结果是什么 - 没有空指针异常,没有任何日志失败,但遗憾的是TableLayout中没有可见的按钮。
答案 0 :(得分:0)
此if子句中的语句永远不会被执行。
if (i + 1 % 4 == 0) {
layout.addView(row);
row = new TableRow(this);
}
这就是原因。
删除if和let按钮,在没有条件的情况下自由添加,它们会出现,然后检查if条件中的错误:i + 1%4 == 0
答案 1 :(得分:0)
确认您已导入TableLayout的LayoutParams而不是ViewGroup的LayoutParams。 StackOverflow上已经回答了许多类似的问题,例如:Programmatically adding TableRow to TableLayout not working
答案 2 :(得分:0)
在随机更改内容之后,事实证明我需要删除此行:
public void ConfigureServices(IServiceCollection services)
{
services.AddDataProtection();
services.ConfigureDataProtection(configure =>
{
configure.SetApplicationName("my application");
});
}
我不知道为什么按钮不能设置布局参数如果它们被放入一个桌面,我不知道为什么Android有这个名称相同的LayoutParams类,如果你使用了错误的然后东西默默地失败了,但这是我的问题。
你会认为人们愿意将FILL_PARENT重命名为MATCH_PARENT,因为他们认为它更容易理解,不会有这种静默失败的多选类系统。