0

我有一个包含以下属性的 XML 文件:

<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 屏幕尺寸,它会产生不希望的偏移。

4

1 回答 1

1

使用 MarginLayoutParams 获取像素值:

track = (ImageView)layout1.findViewById(R.id.cs_track);
MarginLayoutParams params = (MarginLayoutParams)track.getLayoutParams();
int marginTopPixelSize = params.topMargin;
于 2013-03-11T19:12:08.627 回答