0

プログラムでテキスト ビューを含むスクロール ビューを作成したいと考えています。私のコードは以下のようなものです。動作しますが、onSizeChanged で getLayoutParams を実行すると、InvocationTargetException が発生します。コードの何が問題になっていますか?

public MyActivity extends Activity 
  {
    public void onCreate(Bundle savedInstanceState) 
    {       
        super.onCreate(savedInstanceState);
        setContentView(new MyLayout(this));
    }
    protected class MyLayout extends RelativeLayout 
     {
        TextView tv;
        public MyLayout(Context context)
        {
           super(context);
           ScrollView sv = ScrollView(context);
           tv = new TextView(context);
           tv.setText("Hello World");
           sv.addView(tv);
           addView(sv);
        }
        protected void onSizeChanged(int xNew, int yNew, int xOld, int yOld)
        {
            LayoutParams params = (LayoutParams)tv.getLayoutParams(); // I have          InvocationTargetException here. What's wrong?
        }   
    }
}
4

3 に答える 3

0

scrollview は wrap_content ではなく、fill_parent を使用する必要があります。

于 2012-12-14T13:03:17.697 に答える
0

その TextView にテキストを入れる必要があるので、次のようにします。

public MyActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {       
        super.onCreate(savedInstanceState);
        setContentView(new MyLayout(this));
    }
    protected class MyLayout extends RelativeLayout {
    public MyLayout(Context context) {
        super(context);
        ScrollView sv = new ScrollView(context);
        TextView tv = new TextView(context);
        tv.setText("Hello World");
        sv.addView(tv);
        addView(sv);
    }
}
}
于 2012-12-14T12:59:30.257 に答える
0

s - theと theのLayoutParams両方を追加する必要があります。そして、正しいタイプを使用してください(両方に)。ViewScrollViewTextViewFrameLayout.LayoutParams

例えば

...
tv = new TextView(context);
tv.setText("Hello World");
sv.addView(tv, new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
...
于 2012-12-14T13:00:35.470 に答える