以编程方式将视图添加到屏幕底部

时间:2016-10-25 10:41:36

标签: android android-layout android-viewgroup

我想在现有布局的底部添加一个View,而不管在Activity布局文件中定义的ViewGroup的类型(线性,相对等...)

活动布局文件如下所示:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Get Ad"
    android:layout_centerInParent="true"
    android:onClick="showAdd"/>
 </RelativeLayout>

这是放置视图的代码:

ViewGroup rootView = (ViewGroup)((Activity) m_context).findViewById(android.R.id.content);
RelativeLayout.LayoutParams lay = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.MATCH_PARENT,
            RelativeLayout.LayoutParams.MATCH_PARENT);
    lay.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    rootView.addView(adView,lay);

问题是视图出现在屏幕中间而不是底部,正如预期的那样

3 个答案:

答案 0 :(得分:3)

解决方案是将视图附加到屏幕的根布局,这可以通过以下方式实现:

&#xA;&#xA;
  ViewGroup rootView =(ViewGroup)findViewById(android .R.id.content);&#xA;  
&#xA;&#xA;

基本上,根布局是FrameLayout,附加视图到底部中心可以像这样实现:

&#xA;&#xA;
  final FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(&#xA; FrameLayout.LayoutParams.WRAP_CONTENT,&#xA; FrameLayout.LayoutParams.WRAP_CONTENT) ;&#XA; params.gravity = Gravity.BOTTOM | Gravity.CENTER;&#xA; testRoot.addView(dfpBanner,view);&#xA;  
&#xA;

答案 1 :(得分:2)

 RelativeLayout.LayoutParams lay = new RelativeLayout.LayoutParams( 
                                    RelativeLayout.LayoutParams.WRAP_CONTENT,
                                    RelativeLayout.LayoutParams.WRAP_CONTENT);

您要添加的RelativeLayout将整个宽度和高度作为父布局。

答案 2 :(得分:1)

由于您的布局参数仅用于子视图,因此请尝试将其高度设为WRAP_CONTENT

RelativeLayout.LayoutParams lay = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.MATCH_PARENT,
            RelativeLayout.LayoutParams.WRAP_CONTENT);