以编程方式添加textview,直到屏幕变满

时间:2013-10-23 09:18:41

标签: android android-linearlayout

我希望将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
       }

1 个答案:

答案 0 :(得分:2)

尝试为TextView提供一些布局参数:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
valueTV.setLayoutParams(params);

另外,如果你想要获得视图的高度,你的代码就会出错:

viewHeight = view.getHeight(); // not getWidth()

希望这会有所帮助:)