2012-01-24 5 views
1

私はAndroidアプリを書いています。私のメインプロジェクトでは、私の図書館プロジェクトの活動を継承しています。私は以下のスタイルを使用するボタンを持つベースアクティビティにカスタムタイトルバーを持っています:コードで設定されたパラメータのレイアウト単位を設定するにはどうすればよいですか?

<style name="TitleButton"> 
    <item name="android:padding">6dp</item> 
    <item name="android:layout_width">48dip</item> 
    <item name="android:layout_height">48dip</item> 
    <item name="android:layout_gravity">right</item> 
</style> 

うまく動作します。子アクティビティでは、ボタンを追加したいと思います。私はボタンを追加することができ、それはクリックして正常に動作しますが、間違っています。私はそうボタンを追加してい:私は、コードを追加した追加ボタンが大きすぎる、とあまりにも多くのオフセット方法

ImageView imgAdd = new ImageView(this, null, R.style.TitleButton); 
imgAdd.setImageResource(R.drawable.add); 
imgAdd.setClickable(true); 
imgAdd.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     addGroup(); 
    }   
}); 

FrameLayout tb = (FrameLayout) this.findViewById(R.id.Header); 

FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(
    tb.findViewById(R.id.TitleClose).getLayoutParams() 
); 
lp.gravity = Gravity.RIGHT; 
lp.width = 48; 
lp.height = 48; 
lp.setMargins(0, 9, 68, 0); 
imgAdd.setLayoutParams(lp); 

tb.addView(imgAdd, 1); 

enter image description here

お知らせ。私はそれがthis answerのコメントで指摘されたものでなければならないと考えています。幅と高さを設定するとピクセルで設定され、XMLレイアウトではディップで設定されます。それで、私の質問は、コードでレイアウトパラメータを設定するとき、どのようにユニットを設定することができますので、右に表示されるようにピクセルではなくディップで測定する新しい追加ボタンを設定することができますか?

答えて

2

あなたはそれに応じて、幅、高さ、余白を設定し、電流密度を取得し、それを使用するためにDisplayMetricsを使用することができます(reference herePX = DP * (dpiとは/ 160)

+0

BAH!うんざり!概念的には、あなたが言ったことは意味をなさない...唯一の問題は、タブレット(見た目が間違っている)が自分の電話機と同じ密度であることを報告していることです。結果として、密度式は1:1の係数を返しているので、サイズをまったく変更しません。とにかく考えてくれてありがとう。 – eidylon

関連する問題