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 に答える