0

次のようなアクティビティを設定しています。

<RelativeLayout>
    <Button>
    <LinearLayout>
        <RelativeLayout>
             <LinearLayout>  <--- THIS IS WHAT I WANT TO CHANGE
        <RelativeLayout>
    </LinearLayout>
</RelativeLayout>

その線形レイアウトの高さを変更したいので、LayoutParams を使用してみましたが、実行時に常にエラーがスローされます。私は何を間違っていますか?LayoutParams での私の試みは次のとおりです。

    LinearLayout g1 = (LinearLayout) findViewById(R.id.graph1);
g1.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, 30));

更新: これが問題の XML ファイルです。私が変更したいのは、graph1、graph2、graph3、graph4 です。

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#16467A"
    android:padding="10dp" >

        <Button
            android:id="@+id/btn_ok"
            android:layout_width="205dp"
            android:layout_height="40dp"
            android:layout_below="@+id/liniar"
            android:layout_marginTop="10dp"
            android:background="@drawable/kvadrat"
            android:clickable="true"
            android:text="ОК"
            android:textColor="#FFFFFF"
            android:textStyle="bold" />

        <LinearLayout
            android:id="@+id/liniar"
            android:layout_width="205dp"
            android:layout_height="190dp"
            android:layout_alignLeft="@+id/btn_ok"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="false"
            android:background="@drawable/kvadrat"
            android:orientation="vertical" >

            <RelativeLayout
                android:layout_width="204dp"
                android:layout_height="140dp"
                android:layout_gravity="top"
                android:layout_marginTop="10dp" >

                <LinearLayout
                    android:id="@+id/graph1"
                    android:layout_width="30dp"
                    android:layout_height="120dp"
                    android:layout_alignParentBottom="true"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentTop="false"
                    android:layout_centerVertical="true"
                    android:layout_marginLeft="20dp"
                    android:background="#00a313"/>

                <LinearLayout
                    android:id="@+id/graph2"
                    android:layout_width="30dp"
                    android:layout_height="140dp"
                    android:layout_alignParentBottom="true"
                    android:layout_centerVertical="true"
                    android:layout_marginLeft="15dp"
                    android:layout_toRightOf="@+id/graph1"
                    android:background="#00a313"/>

                <LinearLayout
                    android:id="@+id/graph3"
                    android:layout_width="30dp"
                    android:layout_height="80dp"
                    android:layout_alignParentBottom="true"
                    android:layout_centerVertical="true"
                    android:layout_marginLeft="15dp"
                    android:layout_toRightOf="@+id/graph2"
                    android:background="#00a313"/>

                <LinearLayout
                    android:id="@+id/graph4"
                    android:layout_width="30dp"
                    android:layout_height="50dp"
                    android:layout_alignParentBottom="true"
                    android:layout_marginLeft="15dp"
                    android:layout_toRightOf="@+id/graph3"
                    android:background="#00a313"/>
            </RelativeLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="3dp"
                android:orientation="horizontal" >

           <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="29dp"
                android:text="A"
                android:textColor="#DCA601"
                android:textSize="20dp"
                android:textStyle="bold"
                android:typeface="normal" />

           <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="31dp"
                android:text="B"
                android:textColor="#DCA601"
                android:textSize="20dp"
                android:textStyle="bold"
                android:typeface="normal" />

           <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="32dp"
                android:text="C"
                android:textColor="#DCA601"
                android:textSize="20dp"
                android:textStyle="bold"
                android:typeface="normal" />

           <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="32dp"
                android:text="D"
                android:textColor="#DCA601"
                android:textSize="20dp"
                android:textStyle="bold"
                android:typeface="normal" />

            </LinearLayout>

        </LinearLayout>

</RelativeLayout>
4

2 に答える 2

0

LogCat を使用して、エラーに関連する Java スタック トレースを調べます。スタック トレースの内容を理解できない場合は、質問するときにスタック トレースを貼り付けてください。

LinearLayout.LayoutParamsただし、あなたの問題は、 の子に使用しようとしているRelativeLayoutように見えるので、 . を取得していると思いますClassCastException

の特定のフレーバーは、 自体ではなく、のによってLayoutParams決定されます。ViewView

ところで、新しいインスタンスを作成するのではなく、 を呼び出しgetLayoutParams()、既存のインスタンスを調整し、 を介して更新することを検討してください。setLayoutParams()特に、基本クラス (たとえば、 と の両方の基本クラス) を巧みに使用すると、ViewGroup.LayoutParams親の特定のクラスから自分自身をよりよく隔離することができます。LinearLayout.LayoutParamsRelativeLayout.LayoutParams

于 2013-06-18T23:50:34.343 に答える
0

線形レイアウトは相対レイアウトであるため、親の LayoutParams を使用する必要があるため、RelativeLayout.LayoutParams を使用する必要があります。

于 2013-06-18T23:53:38.000 に答える