我希望将TextView程序化添加到布局的末尾,我使用以下代码添加textview:
final TextView valueTV = new TextView(getActivity());
valueTV.setText(UrbanLaw.MainCatalog.get(i));
valueTV.setPadding(10, 10, 10, 0);
valueTV.setId(Integer.parseInt(getArguments().getString("pageIndex"))*100+ i);
((LinearLayout) layout).addView(valueTV);
然后我想获得每个textview和布局的高度,以便在每个Android设备中更好地查看。我使用以下代码来获取高度和宽度:
ViewTreeObserver entire = view.getViewTreeObserver();
entire.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// TODO Auto-generated method stub
Log.d( getArguments().getString("pageIndex")+" " +view.getWidth() + " x " + view.getHeight(),"width and height");
viewHeight = view.getHeight();
Log.d("view height in method", String.valueOf(viewHeight));
view.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
});
在ongloballayout()viewheight中的是真的但是当我想在out中使用它时等于0.如何解决我的问题。主要的我的问题是我想在我的布局中添加文本以结束我的布局,即textview高度小于视图高度。
////////////////////////////////////////////// 更新: 我想要这样的东西:
while( sumHeight < viewHeight)
{
add (textview)
sumHeight += textHeight
}
答案 0 :(得分:2)
尝试为TextView提供一些布局参数:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
valueTV.setLayoutParams(params);
另外,如果你想要获得视图的高度,你的代码就会出错:
viewHeight = view.getHeight(); // not getWidth()
希望这会有所帮助:)