我遇到View leader
时遇到问题,我不确定第二个参数应该是什么
TableLayout leaderTable = (TableLayout)findViewById(R.id.leaderTable);
TableRow tr = new TableRow(this);
tr.setId(i);
tr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
View leader = new View(UserView.this, null, R.id.leaderLayout);
TextView number = (TextView)leader.findViewById(R.id.numberView);
number.setText(String.valueOf(i+1));
tr.addView(leader);
leaderTable.addView(tr);
问题是我的TextView
为空,尽管它是leader.
的子视图
对此问题非常困惑,这是我的XML
<TableLayout
android:id="@+id/leaderTable"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
</TableLayout>
我需要对XML做更多的事情吗?我不需要在其中包含表格吗?
R.id.leaderLayout
是它自己的xml文件,带有该id的线性布局
答案 0 :(得分:1)
以下是View构造函数的开发者页面:
https://developer.android.com/reference/android/view/View.html#View%28android.content.Context%29
如果您希望此视图在创建该视图时设置某些属性或样式,则使用视图的第二个和第三个参数。
看起来您确实希望变量leader
充气。这将采用xml中定义的布局,并将其分配给动态创建的视图。你说你的leaderLayout是一个LinearLayout,所以它看起来像这样。
//Initialize the layout inflator, do this once and use it to inflate as many views as you want
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//Assign your custom view to the variable leader
LinearLayout leader = (LinearLayout) inflator.inflate(R.layout.leaderLayout, tr);
inflate的第一个参数是R.layout。 nameOfYourXmlFile 。第二个是ViewGroup,它将是您的膨胀视图的父级。完成此操作后,您可以在leader上使用findViewById
来获取Xml文件中的子视图,动态添加更多子项,并将其添加为TableRow的子项。
以下是LayoutInflator的开发者页面,以防您对inflate
方法的其他用法感到好奇。
http://developer.android.com/reference/android/view/LayoutInflater.html