将Button添加到LinearLayout - setText给出null

时间:2013-12-28 21:04:58

标签: android android-layout

我正在尝试以编程方式创建按钮并将其添加到LinearLayout。

我有以下代码,虽然一切似乎都运行正常但我最终得到一个没有文字的按钮。

    for (int i = 0; i < seed.dealer.size(); i++)
    {
        Button dealer = new Button(this);
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                                                LayoutParams.WRAP_CONTENT, 40);
        params.gravity= Gravity.CENTER;
        params.setMargins(5, 5, 5, 5);

        dealer.setLayoutParams(params);
        dealer.setBackgroundResource(R.drawable.rounded_green);
        dealer.setTypeface(Typeface.create("sans-serif-light", Typeface.BOLD));
        dealer.setTextSize(22);
        dealer.setTextColor(Color.parseColor("#F0F0F0"));

        dealer.setText(seed.dealer.get(i).name);

        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        float logicalDensity = metrics.density;

        int px = (int) (200 * logicalDensity + 0.5);
        dealer.setMinWidth(px);

        px = (int) (350 * logicalDensity + 0.5);
        dealer.setMaxWidth(px);

        LinearLayout ll = (LinearLayout) findViewById(R.id.dealerContainer);
        ll.addView(dealer);
    }

2 个答案:

答案 0 :(得分:1)

首先检查seed.dealer.get(i).name是否给出了有效的字符串(不是null而不是空的)。如果它给出一个有效的字符串,我认为问题在于按钮的文本颜色(Color.parseColor("#F0F0F0")给出的颜色类似于透明(我没有测试))。因此,请尝试将文字颜色更改为其他颜色,例如Color.BLACKColor.RED类似......

答案 1 :(得分:0)

问题在于这一行:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, 40);

我必须将高度转换为dp,因为按钮高度太小,使得它看起来没有文字。