2011-10-10 12 views
5

ImageViewのパディングを設定しようとしています。私のコードは以下の通りですandroid ImageView setPaddingは効果がありません

private void createEpisodeView() { 
    float scale = this.getResources().getDisplayMetrics().density; 
    int padding = (int) (PADDING * scale + 0.5f); 

    rlItemsRoot = (LinearLayout) findViewById(R.id.rl_items_root); 

    for (int i = 0; i < GameLevels.TOTAL_EPISODES; i++) { 
     ImageView iv = new ImageView(this); 

     iv.setPadding(padding, padding, padding, padding);   
     iv.setBackgroundResource(R.drawable.icon_small); 

     rlItemsRoot.addView(iv); 
    } 

} 

しかし、それは効果がありません。しかし、私はXMLでこれを設定するとうまく見えます。

+0

パディングは、動的に設定するときにピクセルで表現されます.. xml rでpxまたはdipで同じ値を使用 –

+0

私はdipをXMLで使用しています。ここではpixをDIPに変換しています。 5定数はintへの変換の影響を取り消すことです。すなわち0.7はintでは0ですが、0.5を追加するとそれは無効になります。 –

答えて

14

AあなたはこれがImageViewのための背景を設定します

iv.setBackgroundResource(R.drawable.icon_small); 

を使用している自分に気づきました。背景画像は、ビュー内のすべてのコンテンツの背後にあるため、ビュー全体を満たします。

使用

iv.setImageResource(R.drawable.icon_small); 

代わりに。

+0

素晴らしいthnx ..... –

+0

+1いい考えです。 –

+1

ありがとう、私はパディングを取得するために、イメージビューの周りに不必要な線形ラッピングを行う必要はありませんでした! – JoonasS

4

よりもむしろ

iv.setBackgroundResource(R.drawable.icon_small); 

を設定するには、

iv.setImageResource(R.drawable.icon_small); 

を設定し、問題の任意の体は返信してください理由を知っている場合:)

を解決しました。

+2

背景を設定すると、パディングが失われます。背景を設定した後ではなく、 'setPadding(..)'する必要があります。これは 'setBackgroundDrawable(..) 'のドキュメントで指摘されていますが、Googleでは' setBackgroundResource(..) 'については無視しています。 –

+1

他の人の回答を受け入れることも良い考えです。 –

+1

@HamzehSoboh done。訂正ありがとう:-) –

関連する問題