Androidプログラミング 動的に生成したViewの大きさを他のViewに合わせたい

ITCreate Advent Calendar 15日目

adventar.org

本題

Viewを生成する
private TextView textview;
.
.
.
textview = new TextView(this);
textView.setId(text_view);
textViewID = textView.getId();
textView.setText("てきとうなもじ");

TextViewにしてあるが、なんでもいける(はず)

合わせたいViewをxmlファイルで生成
<TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/size_view">

widthとheightはお任せ

xmlファイルで生成したViewの大きさを取得する
   @Override
 public void onWindowFocusChanged(boolean hasFocus) {

    TextView tx = (Textview) findViewById(R.id.size_text);
    int txWidth = tx.getWidth();
    int txHeight = tx.getHeight();
    }

注意しないといけないのは、onCreateの中でやってしまうとレイアウトが生成される前に、getWidthがはしるので0が代入される
onWindowFocusChangedはレイアウト生成後に実行されるので、この中で

合わせる
    @Override
  public void onWindowFocusChanged(boolean hasFocus) {

    TextView tx = (Textview) findViewById(R.id.size_text);
    int txWidth = tx.getWidth();
    int txHeight = tx.getHeight();

    textView.setWidth(txWidth);
    textView.setHeight(txHeight);
    }

これでたぶんいける(簡単)

TextViewでやる分には楽だが、popupWindowでやろうとしたときに大変な目にあったのでAdvent Calendarついでにメモ
popupWindowでやるにはtextView.setWidthあたりのところを

popupWindow(txWindth, txHeight)

こうしたらいける(はず)

以上