Как программно считывать маржу ImageView?

У меня есть ImageView, который написан в файле макета и выглядит так:

<LinearLayout 
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical">

        <ImageView android:id="@+id/news_image" 
            android:layout_height="fill_parent"
            android:layout_width="fill_parent"
            android:layout_marginLeft="18dip"
            android:layout_marginRight="18dip"
            android:background="#aaaaaa" />

</LinearLayout>

Как я могу прочитать атрибут android: layout_marginLeft в моей активности?

Я пробовал этот следующий код, но LayoutParams моего ImageView не имеет каких-либо элементов поля (например, LinearLayout.LayoutParams).

ImageView imageView = (ImageView)findViewById(R.id.news_image);
LayoutParams lp = imageView.getLayoutParams();

int marginLeft = lp.marginLeft; // DON'T do this! It will not work 
                                // cause there is no member called marginLeft

Любые предложения по получению поля от ImageView?

Спасибо!

Ответ 1

вам нужно указать LayoutParams на тип, специфичный для макета, в котором находится представление. То есть, являясь вашим представлением внутри LinearLayout, вам нужно будет сделать следующее:

ImageView imageView = (ImageView)findViewById(R.id.news_image);
LinearLayout.LayoutParams lp =
                (LinearLayout.LayoutParams) imageView.getLayoutParams();

теперь lp позволит вам получить доступ к полям margin*.

Ответ 2

Ваш зол для него выглядит следующим образом:


 LinearLayout. LayoutParams lp = (android.widget.LinearLayout.LayoutParams) imageView.getLayoutParams();

  int i=lp.leftMargin;