在Android中将ImageView添加到RelativeLayout

时间:2015-03-19 20:32:31

标签: android android-layout xamarin relativelayout

所以我在ImageView中以编程方式创建了Activity 我想在ImageView之一的底部添加RelativeLayout

这就是我的尝试:

// creating new ImageView
ImageView shadowView = new ImageView (contextPara);
shadowView.SetBackgroundResource (Resource.Drawable.bottomBar_Shadow);
shadowView.SetScaleType (ImageView.ScaleType.FitXy);

// creating ImageView LayoutParams
WindowManagerLayoutParams imgViewLayoutParams = new WindowManagerLayoutParams ();
imgViewLayoutParams.Width = ViewGroup.LayoutParams.MatchParent;
imgViewLayoutParams.Height = (int)imgViewHeight;
imgViewLayoutParams.Gravity = GravityFlags.Bottom;

// Adding ImageView to RelativeLayout
listViewRelativeLayout.AddView (shadowView, imgViewLayoutParams);

我的问题是这会将ImageView添加到RelativeLayout的TOP,而不是底部。

我也尝试了以下内容:
在我致电AddView并添加ImageView后,我设置Y的{​​{1}}位置。
这实际上有效。它将ImageView向下移动,但我不确定向下移动多少。 ImageView大小不是绝对的。

RelativeLayout

如何将其置于// this moves the ImageView down 100px. shadowView.SetY (100f); 的底部?

请注意:我只能进行数学计算(RelativeLayout身高 - RelativeLayout身高),因为ImageView身高始终为RelativeLayout,直到{{1}完成。

我的其他选择是什么?

感谢您的时间。

2 个答案:

答案 0 :(得分:1)

可能的解决方案:

1

考虑在RelativeLayout XML中放置一个ImageView。

您可以使用

访问Activity / Fragment中的此ImageView

ImageView mImageView = (ImageView) view.findViewById(R.id.imageView);

您可以将起始可见性设置为mImageView.setVisibility(View.GONE),并在以后显示ImageView mImageView.setVisibility(View.VISIBLE);

2

您可以将子布局(LinearLayout)添加到现有的RelativeLayout,此子布局可以通过XML放置在RelativeLayout的底部。

在Activity / Fragment中,您可以通过其ID来定位该子布局(linearLayout),然后以编程方式将ImageView添加到该布局。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
             xmlns:tools="http://schemas.android.com/tools"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             tools:context="com.modup.fragment.FeedFragment">

    <!-- TODO: Update blank fragment layout -->
       <LinearLayout>
              android:id="@+id/linearLayout"
              android:layout_alignParentBottom="true"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
       </LinearLayout>
</RelativeLayout>

答案 1 :(得分:0)

我找到了办法!

使用WindowManagerLayoutParams完成工作,而不是使用RelativeLayout.LayoutParams来设置LayoutParameters。

以下是:

RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams (RelativeLayout.LayoutParams.MatchParent, (int)imgViewHeight);
layoutParams.AddRule (LayoutRules.AlignParentBottom);

AlignParentBottom完成这项工作!