1

私は動的にlinearlayoutを作成し、それにいくつかのimageviewsとtextviewsを追加しています。

コード

ScrollView sv = new ScrollView(this);

LinearLayout llay = new LinearLayout(this);

for(int i =0;i<ns;i++){
    TextView tv = new TextView(this);
    ImageView iv = new ImageView(this);
    iv.setLayoutParams(new LinearLayout.LayoutParams(100,100,50));

    llay.addView(tv);
    llay.addView(iv);
}

アプリケーションの実行時

1番目のデバイス:imageviewsは適切なサイズです。

2番目のデバイス:imageviewsが小さすぎます。

デバイスに依存しないように、imageviewのサイズを明示的に設定する方法はありますか?

4

2 に答える 2

2

これを試して....

異なるサイズの密度のアプリの場合は、固定値の代わりにディスプレイの高さ/幅を使用します。

Display display = getWindowManager().getDefaultDisplay();
      int height = display.getHeight()/10;
      int width = display.getWidth()/5;

ScrollView sv = new ScrollView(this);

LinearLayout llay = new LinearLayout(this);

for(int i =0;i<ns;i++){
    TextView tv = new TextView(this);
    ImageView iv = new ImageView(this);
    iv.setLayoutParams(new LinearLayout.LayoutParams(width,height,0));

    llay.addView(tv);
    llay.addView(iv);
}
于 2012-09-03T11:22:56.890 に答える
1

pxの代わりにdpを使用することをお勧めします。

dpとpxの詳細については、「複数の画面のサポート」にアクセスしてください。

あなたの場合、あなたはピクセルで値を設定します。dpを使用する場合は、次を使用できます。

float x = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, getResources().getDisplayMetrics());
于 2012-09-02T08:41:06.453 に答える