2012-01-24 55 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

呸!騙子!從概念上講,你說的是有道理的,......唯一的問題是我的平板電腦(它看起來不正確)報告它與我的手機密度相同(它看起來正確)。結果,密度公式返回1:1的因子,所以根本不改變大小。無論如何,謝謝你的想法。 – eidylon