0

こんにちは、私はプログラムでUIを管理しようとしています。テーブルにいくつかの行を追加しますが、行の数は必ずしも同じではありません。したがって、プログラムでこれを実行しようとしているので、動的にすることができます。 。

私はすでに試みましたが、ImageButtonとButtonのlayoutparamsを変換する方法を知る必要があります...両方とも同じ方法である必要があり、両方ともボタンです。

よろしくお願いします!!

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >



    <TableLayout 
            android:id="@+id/tableLayout1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" 
            android:stretchColumns="*"
             >


            <TableRow
                android:id="@+id/tableRow1"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                >

                <ImageButton
                    android:id="@+id/imageButton1"
                    android:contentDescription="@string/removeIconDesc"
                    android:layout_width="0dip"
                    android:layout_weight="0.3"
                    android:layout_height="fill_parent"
                    android:src="@drawable/remove_icon" 
                    android:background="@null"/>



                <Button
                     android:layout_width="0dip"
                     android:layout_weight="1"
                     android:layout_height="fill_parent"
                     android:id="@+id/button1"
                     android:text="@string/button1" 
                     android:background="@drawable/pressed"
                     android:drawableRight="@drawable/arrow_left"
                     />

                <Button
                     android:layout_height="fill_parent"
                     android:layout_width="0dip"
                     android:layout_weight="1"
                     android:id="@+id/button2"
                     android:text="@string/button1" 
                     android:background="@drawable/pressed"
                     android:drawableLeft="@drawable/arrow_right"

                     />

                  <ImageButton
                    android:contentDescription="@string/removeIconDesc"
                    android:id="@+id/imageButton2"
                    android:layout_width="0dip"
                    android:layout_weight="0.3"
                    android:layout_height="fill_parent"
                    android:src="@drawable/remove_icon" 
                    android:background="@null"/>
            </TableRow>
    </TableLayout>

XMLで定義されたこのUIをJavaコードに変換しようとしています。動的に行う必要があるため、これまでの最善の試みは以下のUIでした。しかし、次に進むことはできません。 ImageButtonとButtonsのLayoutParams..。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    tLayout = new TableLayout(this);
    tLayout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
    tLayout.setStretchAllColumns(true);

    TableRow tbRow = new TableRow(mainActivity);

    TableRow.LayoutParams tL = new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
    tL.weight = 1;

    tbRow.setLayoutParams(tL);

    RelativeLayout.LayoutParams iM = new RelativeLayout.LayoutParams(0, LayoutParams.MATCH_PARENT);   //this is the right LayoutParams for the ImageButton... I guess
    iM.weight = 0 -- This is not possible.... Error On IDE


    //still need to do the translation to the two buttons... and the other ImageButton, but knowing how to do for the ImageButton I guess I can do the rest..


    setContentView(tLayout);
}

事前にコミュニティに感謝します;)

4

1 に答える 1

0

私はそれを修正し、テーブルレイアウトの列を引き伸ばす線を削除し、imagebuttonの背景をnullとして配置するメソッドも削除しました...

このような:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        tLayout = new TableLayout(this);
        tLayout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));


        TableRow tbRow = new TableRow(this);

        TableRow.LayoutParams tL = new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
        tL.weight = 1;

        TableRow.LayoutParams iM = new TableRow.LayoutParams(0, LayoutParams.MATCH_PARENT);   //this if for the ImageButton..
        iM.weight = (float) 0.3;


        TableRow.LayoutParams iMB = new TableRow.LayoutParams(0, LayoutParams.MATCH_PARENT);   //this if for the ImageButton..
        iMB.weight = (float) 1;


        ImageButton m = new ImageButton(this);
        m.setImageResource(R.drawable.remove_icon);

        m.setLayoutParams(iM);

        Button b = new Button(this);

        b.setText("Cenas");
        b.setLayoutParams(iMB);
        b.setCompoundDrawablesWithIntrinsicBounds(0,0,R.drawable.arrow_left,0);

        Button b2 = new Button(this);
        b2.setBackgroundResource(R.drawable.pressed);
        b2.setText("Conas");
        b2.setLayoutParams(iMB);
        b2.setCompoundDrawablesWithIntrinsicBounds(R.drawable.arrow_right,0,0,0);

        ImageButton m2 = new ImageButton(this);
        m2.setImageResource(R.drawable.remove_icon);
        m2.setLayoutParams(iM);

        tbRow.addView(m);
        tbRow.addView(b);
        tbRow.addView(b2);
        tbRow.addView(m2);

        tLayout.addView(tbRow, tL);


        setContentView(tLayout);




    }
于 2013-03-16T19:42:05.327 に答える