我正在尝试将imageview的layout_marginTop设置为不同密度/屏幕大小的一个值。在我的values-mdpi文件夹中,我在dimensions.xml中有以下行
<dimen name="marginTop">10dp</dimen>
在MainActivity中
ImageView image = (ImageView) findViewById(R.id.s_image);
但是对于imageview没有setmargin方法。有没有办法做到这一点?
答案 0 :(得分:0)
您无需在代码中执行此操作,您可以在定义图像视图的XML文件中执行此操作。有关详细信息,请参阅this page。
<TextView
android:layout_height="@dimen/textview_height"
android:layout_width="@dimen/textview_width"
android:textSize="@dimen/font_size"/>
答案 1 :(得分:0)
你走在正确的轨道上。在xml中引用你的维度值可能最容易(而不是在java代码中设置它)。
<ImageView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginTop="@dimen/yourMarginTopValue" />
答案 2 :(得分:0)
尝试将android:adjustViewBounds="true"
置于
答案 3 :(得分:0)
在XML中执行此操作可能更好,因为您似乎已经在XML中定义了ImageView
。
但是,layout_*
XML属性引用父布局的LayoutParams
,而不是视图本身。要在代码中更改它们,请使用getLayoutParams()
访问它们,进行修改并调用requestLayout()
来安排重新布局传递。例如:
ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams)imageView.getLayoutParams();
lp.topMargin = 123;
imageView.requestLayout();