在 Android 中将 ImageView 添加到 RelativeLayout
Add ImageView to RelativeLayout in Android
所以我在 Activity
中以编程方式创建了一个 ImageView
。
我想在我的 RelativeLayout
.
之一的底部添加这个 ImageView
这是我试过的:
// 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
的顶部,而不是底部。
我还尝试了以下方法:
在我调用 AddView
并添加 ImageView
之后,我设置了 ImageView
.
的 Y
位置
这确实有效。它会将 ImageView
向下移动,但我不确定要向下移动多少。 RelativeLayout
大小不是绝对的。
// this moves the ImageView down 100px.
shadowView.SetY (100f);
我怎样才能把它放到RelativeLayout
的底部?
请注意:我不能只计算(RelativeLayout
身高 - ImageView
身高)因为 RelativeLayout
身高总是 0
直到 OnCreate
结束。
我还有哪些选择?
感谢您的宝贵时间。
可能的解决方案:
1.
考虑在 RelativeLayout 中放置一个 ImageView XML。
您可以使用
在 Activity/Fragment 中访问此 ImageView
ImageView mImageView = (ImageView) view.findViewById(R.id.imageView);
您可以将开始可见性设置为消失 mImageView.setVisibility(View.GONE)
,并在稍后显示 ImageView mImageView.setVisibility(View.VISIBLE)
;
2.
您可以在现有的RelativeLayout中添加一个子布局(LinearLayout),这个子布局可以通过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>
我找到方法了!
不使用 WindowManagerLayoutParams
来设置 LayoutParameters,而是使用 RelativeLayout.LayoutParams
来完成这项工作。
方法如下:
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams (RelativeLayout.LayoutParams.MatchParent, (int)imgViewHeight);
layoutParams.AddRule (LayoutRules.AlignParentBottom);
AlignParentBottom
完成任务!
所以我在 Activity
中以编程方式创建了一个 ImageView
。
我想在我的 RelativeLayout
.
ImageView
这是我试过的:
// 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
的顶部,而不是底部。
我还尝试了以下方法:
在我调用 AddView
并添加 ImageView
之后,我设置了 ImageView
.
的 Y
位置
这确实有效。它会将 ImageView
向下移动,但我不确定要向下移动多少。 RelativeLayout
大小不是绝对的。
// this moves the ImageView down 100px.
shadowView.SetY (100f);
我怎样才能把它放到RelativeLayout
的底部?
请注意:我不能只计算(RelativeLayout
身高 - ImageView
身高)因为 RelativeLayout
身高总是 0
直到 OnCreate
结束。
我还有哪些选择?
感谢您的宝贵时间。
可能的解决方案:
1.
考虑在 RelativeLayout 中放置一个 ImageView XML。
您可以使用
在 Activity/Fragment 中访问此 ImageViewImageView mImageView = (ImageView) view.findViewById(R.id.imageView);
您可以将开始可见性设置为消失 mImageView.setVisibility(View.GONE)
,并在稍后显示 ImageView mImageView.setVisibility(View.VISIBLE)
;
2.
您可以在现有的RelativeLayout中添加一个子布局(LinearLayout),这个子布局可以通过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>
我找到方法了!
不使用 WindowManagerLayoutParams
来设置 LayoutParameters,而是使用 RelativeLayout.LayoutParams
来完成这项工作。
方法如下:
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams (RelativeLayout.LayoutParams.MatchParent, (int)imgViewHeight);
layoutParams.AddRule (LayoutRules.AlignParentBottom);
AlignParentBottom
完成任务!