Как программно считывать маржу 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;