Как читать границу ImageView программно? - PullRequest
11 голосов
/ 03 февраля 2011

У меня есть 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?

Спасибо!

Ответы [ 2 ]

25 голосов
/ 03 февраля 2011

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

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

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

6 голосов
/ 03 февраля 2011

Ваш золь для него, как показано ниже:


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

  int i=lp.leftMargin;
...