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

时间:2016-03-15 11:16:46

标签: java android layout android-linearlayout

我想尝试在android上使用数据库,所以我制作了一个小应用程序,允许您将联系人添加到数据库,然后显示它们。 如果我在xml上创建布局,然后在代码中编辑文本字符,我就能够显示联系人(来自数据库)。但我想在代码中构建布局,以便我可以添加任意数量的联系人。

以下代码是我用来创建布局的方法,每当我运行此代码时应用程序崩溃。我的猜测是params存在问题。如果只输入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;
    }

2 个答案:

答案 0 :(得分:1)

而不是使用setLayoutParams,而是使用LayoutParams的{​​{1}}方法中的addView(View v, LayoutParams params)

LinearLayout

答案 1 :(得分:0)

可以更改行

numberView.setText(contact.getPhoneNumber());

到这个

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