0

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

次に、各テキストビューとレイアウトの高さを取得して、すべての 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 は true ですが、これを in out で使用したい場合は 0 です。どうすれば問題を解決できますか。私の主な質問は、テキストビューの高さの合計がビューの高さよりも小さいテキストをレイアウトの最後に追加したいということです。

//////////////////////////////////////////// 更新: 欲しいこのようなもの:

       while( sumHeight < viewHeight)
       { 
         add (textview)
         sumHeight += textHeight
       }
4

1 に答える 1

2

TextView にいくつかのレイアウト パラメータを指定してみてください。

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

また、ビューの高さを取得しようとしている場合は、コードに誤りがあります。

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

お役に立てれば :)

于 2013-10-23T09:22:08.007 に答える