1

スクロールビュー内にテーブルレイアウトを作成しようとしていますが、エラーが発生します画面に複数のテーブルレイアウトがあり、ここでイメージビューを使用して動的に塗りつぶします

Logcat error

05-07 15:36:33.193: E/AndroidRuntime(681): java.lang.ClassCastException: android.widget.TableLayout$LayoutParams

main.xml

   <?xml version="1.0" encoding="utf-8"?>

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >
       <ScrollView 
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
        >
     <TableLayout  android:layout_height="wrap_content"
                  android:layout_width="wrap_content"
                  android:id="@+id/itable">
        <TableRow
                 android:id="@+id/trstate"
                 android:layout_height="wrap_content"
                  android:layout_width="wrap_content"
         >
        <TextView
        android:id="@+id/tstate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="NewYork"
        android:textAppearance="?android:attr/textAppearanceLarge" />
          </TableRow>
        <TableRow
                 android:id="@+id/trimage"
                 android:layout_height="wrap_content"
                  android:layout_width="wrap_content"
                >
        <ImageView  
                 android:id="@+id/iimage"
         android:layout_width="wrap_content"
            android:layout_height="wrap_content"
                         />

        </TableRow>

    </TableLayout>

       </ScrollView>

</LinearLayout>

TableActivity.java

    package com.table.image;

     import java.io.BufferedInputStream;
     import java.io.InputStream;
     import java.net.URL;
     import java.net.URLConnection;
     import android.app.Activity;
     import android.content.Context;
     import android.graphics.Bitmap;
     import android.graphics.BitmapFactory;
       import android.os.Bundle;
    import android.util.Log;
    import android.view.Gravity;
     import android.widget.ImageView;
     import android.view.ViewGroup;
    import android.widget.TableLayout;
   import android.widget.TableLayout.LayoutParams;
   import android.widget.TableRow;
import android.widget.TextView;

public class TableLayoutActivity extends Activity {
    /** Called when the activity is first created. */

    public TableLayout itable;
    public TableRow trimage;
    public TableRow trstate;
    public ImageView iimage;
    public TextView tstate;



    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);


        itable = (TableLayout)findViewById(R.id.itable);
        itable.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT));

        for (int i = 0; i < 3; i++) {

            trstate = new TableRow(this);
            trstate.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
                    LayoutParams.WRAP_CONTENT));

            tstate = new TextView(this);
            tstate.setLayoutParams(new TableRow.LayoutParams(50,50));
            tstate.setText("NewYork");
            trstate.addView(tstate);



            trimage = new TableRow(this);
            trimage.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
                    LayoutParams.WRAP_CONTENT));
            for (int j = 0; j < 3; j++)
            {   
                Log.i("Test",Integer.toString(i) + "-" + Integer.toString(j));
                iimage = new ImageView(this);
                iimage.setPadding(8,8,8,8);
                iimage.setLayoutParams(new TableRow.LayoutParams(100,100));
                iimage.setImageResource(R.drawable.abc);
                trimage.addView(iimage);
             }            
            itable.addView(trimage);
            itable.addView(trstate);

        }

    }
}
4

2 に答える 2

2

あなたは正しくないTableLayout内部を作成しています。ルートレイアウトとして作成しますLinearLayoutScrollView

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" 
android:gravity="center">

<AutoCompleteTextView
android:id="@+id/autoCompleteTextView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10"
android:text="AutoCompleteTextView" >

<requestFocus />

</AutoCompleteTextView>

</LinearLayout>

<ScrollView 
android:id="@+id/scrollview1"
android:layout_width="fill_parent" 
android:layout_height="fill_parent"
android:orientation="vertical" android:layout_marginTop="10dip">

<TableLayout  android:layout_height="wrap_content"
          android:layout_width="wrap_content"
          android:id="@+id/itable">
<TableRow
         android:id="@+id/trstate"
         android:layout_height="wrap_content"
          android:layout_width="wrap_content">

 </TableRow>
 <TableRow
         android:id="@+id/trimage"
         android:layout_height="wrap_content"
          android:layout_width="wrap_content"
        >
<ImageView  
         android:id="@+id/iimage"
 android:layout_width="wrap_content"
    android:layout_height="wrap_content"
                 />

<TextView
    android:id="@+id/tstate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="NewYork"
    android:textAppearance="?android:attr/textAppearanceLarge" />

</TableRow>

</TableLayout>

</ScrollView>

</LinearLayout>

編集:

 public class SampleAndroidActivity extends Activity {
/** Called when the activity is first created. */

public TableLayout itable;
public TableRow trimage;
public TableRow trstate;
public ImageView iimage;
public TextView tstate;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    itable = (TableLayout) findViewById(R.id.itable);
    /*Remove this line 
     * itable.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
     * LayoutParams.WRAP_CONTENT));
     */

    for (int i = 0; i < 3; i++) {

        trstate = new TableRow(this);
        trstate.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT));

        tstate = new TextView(this);
        tstate.setLayoutParams(new LayoutParams(50, 50));
        tstate.setText("NewYork");
        trstate.addView(tstate);

        trimage = new TableRow(this);
        trimage.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT));
        for (int j = 0; j < 3; j++) {
            Log.i("Test", Integer.toString(i) + "-" + Integer.toString(j));
            iimage = new ImageView(this);
            iimage.setPadding(8, 8, 8, 8);
            iimage.setLayoutParams(new LayoutParams(100, 100));
            iimage.setImageResource(R.drawable.events);
            trimage.addView(iimage);
        }
        itable.addView(trimage);
        itable.addView(trstate);

    }

}
}
于 2012-05-07T10:48:42.073 に答える
0

.xml ファイル コードを変更します。タグをタグの外側に置き、それが意味する、

<ScrollView 
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
        >
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

 <TableLayout  android:layout_height="wrap_content"
                  android:layout_width="wrap_content"
                  android:id="@+id/itable">
        <TableRow
                 android:id="@+id/trstate"
                 android:layout_height="wrap_content"
                  android:layout_width="wrap_content"
         >
        <TextView
        android:id="@+id/tstate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="NewYork"
        android:textAppearance="?android:attr/textAppearanceLarge" />
          </TableRow>
        <TableRow
                 android:id="@+id/trimage"
                 android:layout_height="wrap_content"
                  android:layout_width="wrap_content"
                >
        <ImageView  
                 android:id="@+id/iimage"
         android:layout_width="wrap_content"
            android:layout_height="wrap_content"
                         />

        </TableRow>

    </TableLayout>

</LinearLayout>

 </ScrollView>

それはあなたの問題を解決するかもしれません。

于 2012-05-07T10:52:17.457 に答える