2013-07-31 28 views
0

这是我的代码,但不知道为什么它返回null?不过,我可以在这里放一个空的支票,但是有什么问题吗?LayoutParams返回null

TextView descriptiontv = (TextView) findViewById(R.id.descriptiontv); 
    TextView tc = new TextView(c); 
    final PopupWindow windowPopUp = new PopupWindow(tc,LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT ,false); 

    tc.setBackgroundResource(R.drawable.bg_training_baloon_hc_2x); 
    tc.setText("this is a demo test to check how it looks, i m just wanting to test whether it works or not"); 
    tc.setPadding(20, 20, 20, 20); 
    LinearLayout.LayoutParams params = new android.widget.LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 
    params.setMargins(30, 0, 30, 0); 
    tc.setLayoutParams(params); 

回答

0

这里

tc.getLayoutParams() 

你没有给它还没有任何params所以它会返回null。也许你的意思

descriptiontv.getLayoutParams() 

编辑

尝试改变

params.leftMargin = 30; 
params.rightMargin = 30; 

params.setMargins(30, 0, 30, 0); 

,并更改

LinearLayout.LayoutParams params = (android.widget.LinearLayout.LayoutParams)tc.getLayoutParams(); 

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
+0

哎呀,我忘记设置layoutparams,它们怎么会是非空的;) – Ankit

+0

我不确定你想要什么。你是否希望它们与用xml创建的'TextView'的'params'相同?如果是这样,请再次查看我的答案。 – codeMagic

+0

我想给textview一些保证金,但它似乎并没有这样工作 – Ankit

2

根据我的经验,你必须认为第一添加到它的父视图,然后才能为它设置布局参数,就像这样:

TextView calendarYear = new TextView(getActivity()); 
calendarYear.setText(calendar.getYear() + ""); 
calendarYear.setTextSize(20); 
calendarYear.setTypeface(null, Typeface.BOLD); 
calendarYear.setGravity(Gravity.CENTER); 
calendarYear.setTextColor(resources.getColor(android.R.color.black)); 
calendarItemsLinearLayout.addView(calendarYear); 

// We have to add the TextView to the layout first before we 
// can set the layout margins for it 
ViewGroup.LayoutParams layoutParams = calendarYear.getLayoutParams(); 
((LinearLayout.LayoutParams)layoutParams).setMargins(0, (int)(16 * density), 0, 0); 
calendarYear.setLayoutParams(layoutParams);