缩放LinearLayouts子项以使它们适合屏幕

时间:2018-05-24 11:30:37

标签: android android-linearlayout

您好我正试图在底部制作一个带有AdMob横幅的游戏菜单。我想在SurfaceView上绘制菜单。为了分离Banner和SurfaceView,我使用了LinearLayout。问题是SurfaceView是全屏的,并将横幅推到屏幕外(底部)。反正有没有缩放SurfaceView所以它不会将横幅推出屏幕外? (SurfaceView高度 - 横幅高度)。 这是我的代码:

    linearLayout = new LinearLayout(this);
    linearLayout.setId(Constants.LINLAY_ID);
    linearLayout.setOrientation(LinearLayout.VERTICAL);

    contentView = new ContentView(this);

    AdView adView = new AdView(this);
    adView.setAdSize(AdSize.BANNER);
    adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
    AdRequest adRequest = new AdRequest.Builder().build();
    adView.loadAd(adRequest);

    linearLayout.addView(contentView);
    linearLayout.addView(adView);
    setContentView(linearLayout);

` 注意:如果我将其更改为:

linearLayout.addView(adView);
linearLayout.addView(contentView);

横幅显示在顶部,SurfaceView被推下一点点。 谢谢你的答案:)

1 个答案:

答案 0 :(得分:1)

在线性布局中使用布局权重:

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <SurfaceView
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="4"/>
        <TextView
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"/>
    </LinearLayout>

用您的bannerview替换Textview

使用以下方法动态设置布局权重

LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
    LayoutParams.MATCH_PARENT,
    0f,
    1.0f
);
YOUR_VIEW.setLayoutParams(param);

此处第三个参数是布局权重