我試圖將我的LinearLayout
的高度設置爲45傾角。LinearLayout.LayoutParams如何使用dip ...?
如何在擴展LinearLayout
時執行此操作?
現在我只是做:LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, 45);
我試圖將我的LinearLayout
的高度設置爲45傾角。LinearLayout.LayoutParams如何使用dip ...?
如何在擴展LinearLayout
時執行此操作?
現在我只是做:LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, 45);
去這種問題是建立在價值觀dimens.xml
文件的最佳方法,並在您暢遊值在那裏,然後在你的代碼從該文件中拉出尺寸。這就是資源的用途,對吧? =)
這裏有一個dimens.xml
的例子:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="about_image_bottom">0dp</dimen>
</resources>
這是你可以將其拉出代碼:
RelativeLayout.LayoutParams iv_params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
iv_params.setMargins(0, 0, 0, (int) getResources().getDimension(R.dimen.about_image_bottom));
然後設置的參數,你需要的任何對象,在我的情況下ImageView iv:
iv.setLayoutParams(iv_params);
也許最好的辦法是在XML中指定。用什麼都類創建於XML標籤擴展的LinearLayout取代正常的LinearLayout標籤:
<com.example.MyLinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="45dp"
android:orientation="vertical" >
....
更多信息,請參見here。
您可以使用DisplayMatrics
並確定屏幕密度。事情是這樣的:
int pixelsValue = 5; // margin in pixels
float d = context.getResources().getDisplayMetrics().density;
int margin = (int)(pixelsValue * d);
希望它可以幫助^^
+1不錯的解決方案Gix .. – 2012-03-12 04:42:43
Shou ldn't dimens.xml包含dn而不是dp?由於dip更加精確... – Salmaan 2014-12-22 13:02:01
dip == dp,如果您在這裏查看答案,他們將獲得有關Android中不同測量單位的含義的所有信息http://stackoverflow.com/questions/2025282/difference -between-px-dp-dip-and-sp-in-android – Gix 2014-12-22 20:44:13