2012-05-07 8 views
1

私はscrollview内tablelayout作成しようとしています中にエラーが発生しますが、それは私がここでImageViewの は私が私のlogcatエラーtablelayoutはscrollview

Logcat error 

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

メイン入れ使用して動的に埋めるあるwhichi画面上に複数のtablelayoutを持ってerorr 私を与えます。 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); 

     } 

    } 
} 

答えて

2

TableLayout内にLinearLayoutが正しく作成されていません。 ScrollViewをルートレイアウトにします。

<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); 

    } 

} 
} 
+0

はい私のコードは機能しますが、画面の上に問題がもう1つあります。他の部分がスクロールされない手動検索ボックスがあります。スクロールですので、スクロールビューにメインのlinearlayoutを置くと何ができますか?完全な画面のスクロールよりも、テーブルのレイアウトだけをスクロールしたいのですが、私の検索ボックスではありません – Sunny

+0

このリンクを見る Sunny

+0

上記のリンクは表示されていません.. – Nishant

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> 

をタグを置きます。