2013-03-11 58 views
0

我有以下attritubes的XML文件:如何找到layout_marginTop

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:id="@+id/al_cs_layout1" 
android:gravity="center_vertical"> 

<ImageView android:id="@+id/cs_track" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:background="@drawable/fader_background5" 
android:layout_marginLeft="0dp" 
android:layout_marginTop="20dp" > 
</ImageView> 
... 

,這裏是我的Java代碼:

public void initialize(Context context) 
{ 
Log.d("initialize (MySeekBar)","initialize"); 
setWillNotDraw(false); 

LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View view1 = inflater.inflate(R.layout.custom_seekbar, this); 

layout1 = (RelativeLayout)view1.findViewById(R.id.al_cs_layout1); 
track = (ImageView)layout1.findViewById(R.id.cs_track); 
thumb = (ImageView)layout1.findViewById(R.id.cs_thumb); 
... 

我上被決定了頂部自定義搜索條工作使用可變的marginTop = 20;然而,這是由一個不同的程序員更老的手機上做的。 20假設代表在XML中定義的邊界頂部,但它使用的是dp而不是像素。我怎樣才能找到R.id.cs_track的marginTop屬性?它在舊手機上效果很好,但是在任何手機上都沒有與dp相同的屏幕尺寸,這會造成不希望的偏移。

回答

1

使用MarginLayoutParams以像素爲單位獲得價值:

track = (ImageView)layout1.findViewById(R.id.cs_track); 
MarginLayoutParams params = (MarginLayoutParams)track.getLayoutParams(); 
int marginTopPixelSize = params.topMargin; 
+0

謝謝。我嘗試了類似的東西,但由於某種原因,它無法正常工作。現在看起來工作正常。 – Jareddlc 2013-03-11 20:21:08