0

ScrollView にボタンを動的に追加するのに苦労しています。以下のコードはボタンを追加していますが、スクローラーはありません。ボタンを(動的ではなく)XMLに直接配置している場合、それは機能しており、上下にスクロールできます。

私の見解:

<ScrollView android:id="@+id/ScrollView01"
android:layout_width="264dp"
android:layout_height="match_parent"
android:fillViewport="true"
>

    <LinearLayout
        android:id="@+id/buttons"
        android:layout_width="264dp"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:scrollbars="vertical"
         >         

     ** HERE THE BUTTONS SHOULD BE ADDED DYNAMICALLY **     

    </LinearLayout>

</ScrollView>

ボタンを追加するコード:

    // create new button
    final Button newbutton = new Button(this);

    // set background color
    newbutton.setBackgroundColor(Color.GRAY);

    // set width and height
    newbutton.setWidth(50);
    newbutton.setHeight(20);

    // set position
    newbutton.setY(((float)numOfButton*20)+20);
    newbutton.setX(100);

    // set text
    newbutton.setText(Integer.toString(numOfButton));

    // create patameter
    final LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
            LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT
            );

    //set listener
    android.view.View.OnClickListener buttonListener = new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            // make all the DrawView invisible
            for(View view : comments){
                view.setVisibility(View.INVISIBLE);
            }

            // set the chosen comment visible
            comments.get(numOfButton).setVisibility(View.VISIBLE);

            boardsHandler.setCurrenBoard(numOfButton);
        }};

        newbutton.setOnClickListener(buttonListener);

        // creating a thread to add button
        buttons.post(new Runnable() { 
            @Override
            public void run() {
                buttons.addView(newbutton, p);
            }
        });

それは何LinearLayout.LayoutParams pかですか?

ありがとう!

4

3 に答える 3

1

最初に次のコードを試してください

LinearLayout myContainer = findViewById(R.id.layoutId);

ビューのパラメーターを設定するときは、ウィジェットの親ビューに対応する必要があります。

LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, 
LinearLayout.LayoutParams.FILL_PARENT);

あなたがやっているように最後にボタンを追加します。

試してみて、それが機能するかどうかを教えてください

于 2013-05-05T18:01:39.317 に答える
0

X と Y の位置を設定しても機能しません。LinearLayout は、幅/高さのみを考慮して、子を垂直または水平にレイアウトします。

これ以外に -のbuttons.invalidate()後に電話をかけてみましたかbuttons.addView(...)。これにより、レイアウトが更新され、新しいボタンが表示されます。

于 2013-05-05T18:39:14.990 に答える