android – 以编程方式设置LayoutParams

我把一个游戏中的聊天模块放到一个应用程序中。 我正在将它们收到的文本消息添加到LinearLayout视图中。 我想将布局参数设置为TextView,但下面的代码崩溃,错误信息让我感到困惑。

private void addChat(String chat, String when, Boolean mine) { int leftMargin; TextView tv = new TextView(this); llview.addView(tv); tv.setTextColor(Color.WHITE); tv.setTextSize(2,25); tv.setText(chat); if (mine) { leftMargin = 5; tv.setBackgroundColor(0x7C5B77); } else { leftMargin = 50; tv.setBackgroundColor(0x778F6E); } final ViewGroup.MarginLayoutParams lpt =(MarginLayoutParams)tv.getLayoutParams(); lpt.setMargins(leftMargin,lpt.topMargin,lpt.rightMargin,lpt.bottomMargin); tv.setLayoutParams(new ViewGroup.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); } 

当它运行时,所有上面的代码执行,但在android运行时崩溃作为:

 03-13 14:15:38.513: E/AndroidRuntime(12985): java.lang.ClassCastException: android.view.ViewGroup$LayoutParams 

并通过debugging器,它实际上处理所有这些行

但是,当尝试渲染具有同样神秘的exception的细节信息时:

 android.view.ViewGroup$LayoutParams 

那么,为了达到这个状态做了什么? 我应该做些什么来交替左/右缩进信息?

只需从底部进行replace并添加此项

 tv.setLayoutParams(new ViewGroup.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 

之前

 llview.addView(tv); 

创build视图后,我们必须添加布局参数。

像这样改变

 TextView tv = new TextView(this); tv.setLayoutParams(new ViewGroup.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); llview.addView(tv); tv.setTextColor(Color.WHITE); tv.setTextSize(2,25); tv.setText(chat); if (mine) { leftMargin = 5; tv.setBackgroundColor(0x7C5B77); } else { leftMargin = 50; tv.setBackgroundColor(0x778F6E); } final ViewGroup.MarginLayoutParams lpt =(MarginLayoutParams)tv.getLayoutParams(); lpt.setMargins(leftMargin,lpt.topMargin,lpt.rightMargin,lpt.bottomMargin);