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);