2012-02-05 10 views
0

私の問題は簡単かもしれませんが、本当に解決できません。ある時点で、私のコードではLinearLayoutの画像の束(ImageView)がAlertDialogの中に表示されます。 問題はすべてが表示されないことです。LinearLayoutはすべてを表示しません

public LinearLayout createLayout(String text) { 
    LinearLayout ll = new LinearLayout(this.c); 

    int res; 
    for(int i=0; i<text.length(); ++i) { 
     res = this.c.getResources().getIdentifier("pigpen_" + Character.toLowerCase(text.charAt(i)), "drawable", this.c.getPackageName()); 
     ImageView iv = new ImageView(this.c); 
     iv.setPadding(5, 0, 0, 5); 
     iv.setImageResource(res); 
     ll.addView(iv); 
    } 
    return ll; 
} 

そしてDialogAlertのためのコード:

は、ここに私のコードです

protected ResultDialog(final Context context, CharSequence title, LinearLayout ll) { 
    super(context); 

    ll.setPadding(10, 5, 10, 5); 

    this.setView(ll); 
    this.setTitle(title); 
} 

image

そして、あなたが見ることができるように、結果は良くありません。理由は何ですか?

答えて

0
LinearLayout ll = new LinearLayout(this.c); 
    ArrayList<Integer> alImages = new ArrayList<Integer>(); 
    ll.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 

    for(int i=0; i<text.length(); ++i) { 
     cur = text.charAt(i); 
     pos = this.getCharAlphabetPosition(cur); 
     if(pos > 0 && pos < alphabetId.length) { 
      res = alphabetId[pos]; 
      alImages.add(res); 
     } 
    } 
    gv.setAdapter(new ImageAdapter(this.c, alImages)); 
    gv.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 

    gv.setNumColumns(GridView.AUTO_FIT); 
    gv.setColumnWidth(25); 

    ll.addView(gv); 
} 

のEtミリアンペアクラッセのImageAdapter: パブリッククラスImageAdapterはBaseAdapterがListAdapter { プライベートコンテキストCを実装して延び。 private ArrayList alImages;

public ImageAdapter(Context c, ArrayList<Integer> alImages) { 
    this.c = c; 
    this.alImages = alImages; 
} 

public int getCount() { 
    return this.alImages.size(); 
} 

public Integer getItem(int position) { 
    return this.alImages.get(position); 
} 

public long getItemId(int position) { 
    return 0; 
} 

public View getView(int position, View convertView, ViewGroup parent) { 
    ImageView imageView; 
    if (convertView == null) { // if it's not recycled, initialize some attributes 
     imageView = new ImageView(this.c); 
     imageView.setLayoutParams(new GridView.LayoutParams(25, 25)); 
     imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     imageView.setPadding(5, 0, 0, 5); 
    } else { 
     imageView = (ImageView) convertView; 
    } 

    imageView.setImageResource(this.getItem(position)); 
    return imageView; 
} 

} 
0

問題はLinearLayoutにサイズがないことです。幅と高さは0です。したがって、すべてが完全に機能します。

setLayoutParamsへの電話がありません。それだけです。

ll.setLayoutParams(new LinearLayout.LayoutParams(FILL_PARENT, FILL_PARENT)); 
+0

こんにちは。あなたのお手伝いをありがとう。私はあなたの解決策を試しましたが、何も変わりません。また、minimumHeightを配置しようとしました。レイアウトは高さが高いですが、画像はまだ表示されません。完璧な救済策は、それぞれ9枚の画像を復帰させることです。 RelativeLayoutを使用するとうまくいくと思いますか? – Passeur

+0

おそらく 'GridView'を検索します。 – poitroae

+0

私は10枚の画像ごとに新しいtableRowでTableLayoutを使用しました。私はそれがより大きい画面で振る舞う方法について懸念しています。 – Passeur

0

LinearLayoutをHorizo​​ntalScrollViewでラップすることができます。そうすれば、たくさんの画像を追加したり、それらをすべて見ることができます。

関連する問題