如何以编程方式将TextView宽度和高度设置为换行内容

时间:2017-11-18 23:39:59

标签: android nullpointerexception

我正在以编程方式从SQLite数据库编写表。

在循环中,我正在生成所需的TextViews,并且当数据长于现有屏幕允许时,我尝试将数据包装在TextView descCol中。

以下链接提供了执行此操作的建议: Setting width to wrap_content for TextView through code

然而,当使用任何建议的方法时,我得到java.lang.NullPointerException

这是我的代码示例:

TextView descCol = new TextView(this);
descCol.getLayoutParams().width = ViewGroup.LayoutParams.WRAP_CONTENT;

在这种情况下,调试显示它会在java.lang.NullPointerException行上抛出getLayoutParams()

我也试过了:

TextView descCol = new TextView(this);
ViewGroup.LayoutParams params = descCol.getLayoutParams();
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
params.width = ViewGroup.LayoutParams.WRAP_CONTENT;
descCol.setLayoutParams(params);

在这种情况下,调试显示它会在java.lang.NullPointerException行上抛出params.height

Debug显示在执行getLayoutParams()方法后的任何一种情况下,params等于null,显然抛出异常。

我尝试在descCol之前先将其他参数分配给getLayoutParams()(文字颜色,文字,重力等),但得到的结果相同。

有关如何避免java.lang.NullPointerException的建议将不胜感激。

3 个答案:

答案 0 :(得分:4)

尝试这种方式:

  LinearLayout.LayoutParams textParam = new LinearLayout.LayoutParams
                        (LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f);

    textView.setLayoutParams(textParam);

答案 1 :(得分:3)

我还可以通过简单地使用setWidth和setHeight方法以编程方式完成我的任务。

textview.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
textview.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);

答案 2 :(得分:1)

为什么你甚至没有设置布局Params时使用getLayoutParams()? 你需要先设置Layay Params。像这样。

 TextView view = new TextView(this);
 view.setText("example textview ");
 //adding layout properties 
 view.setLayoutParams(new LinearLayout.LayoutParams
                    (LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, 0));
// add the textview to the parentLayout
parentLayout.addView(view);