无法正确使用.setLayoutParams(...)- Android

tuwxkamq  于 2023-05-12  发布在  Android
关注(0)|答案(2)|浏览(106)

我想尝试在Android上使用数据库,所以我做了一个小应用程序,允许你将联系人添加到数据库中,然后显示它们。
如果我用XML创建布局,然后用代码编辑文本字段,我就能够显示联系人(来自数据库)。但是我想用代码构建布局,这样我就可以添加尽可能多的联系人。
下面的代码是我用来创建布局的方法,每当我让它运行此代码时,应用程序就会崩溃。我的猜测是参数有问题。如果只输入LayoutParams.MatchContent,它会要求我导入,并给我很多选项,这就是为什么它说LinearLayout.LayoutParams...;
我将生成的布局添加到LinearLayout中。

private LinearLayout createContactView (Contact contact) {
    LinearLayout contactInfoWrapper = new LinearLayout(this);
    contactInfoWrapper.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
    contactInfoWrapper.setOrientation(LinearLayout.VERTICAL);

    TextView nameView = new TextView(this);
    nameView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
    nameView.setText(contact.getName());
    contactInfoWrapper.addView(nameView);

    TextView numberView = new TextView(this);
    numberView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
    numberView.setText(contact.getPhoneNumber());
    contactInfoWrapper.addView(numberView);

    return contactInfoWrapper;
}
disbfnqx

disbfnqx1#

不要使用setLayoutParams,而是在LinearLayoutaddView(View v, LayoutParams params)方法中使用LayoutParams

TextView nameView = new TextView(this);
nameView.setText(contact.getName());
contactInfoWrapper.addView(nameView, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
sczxawaw

sczxawaw2#

换一条线

numberView.setText(contact.getPhoneNumber());

对此:

numberView.setText(String.valueOf(contact.getPhoneNumber()));

相关问题