android - 以编程方式设置 LinearLayout 的重力

标签 android unity3d position admob android-linearlayout

我已按照说明为 Unity 制作新的 AdMob 插件。广告正确显示,但底部位置有问题。它们出现在屏幕顶部。我已将重力设置为底部(对于 FrameLayout),但横幅广告再次出现在屏幕顶部。

我没有任何带有 LinearLayout/FrameLayout 标签的 .xml 文件。

这里是所有代码:

public class playads {
private String adUnitID = "ca-app-pub-9578188175087140/5483276313";
private Activity activity; //Store the android main activity
private AdView adView; //The AdView we will display to the user
private LinearLayout layout; //The layout the AdView will sit on

public playads () {
    activity = UnityPlayer.currentActivity;
    activity.runOnUiThread(new Runnable() {
        public void run(){
            adView = new AdView(activity);
            adView.setAdUnitId(adUnitID);
            adView.setAdSize(AdSize.BANNER);

            AdRequest request = new AdRequest.Builder().build();

            adView.setAdListener(new AdListener() {
                public void onAdLoaded() {
                    if(layout == null)
                        Log.d("null", "null");
                        {
                            activity.runOnUiThread(new Runnable() {
                                public void run(){
                                    layout = new LinearLayout(activity);
                                    layout.addView(adView);
                                    //FrameLayout.LayoutParams p = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
                                    //p.gravity=Gravity.BOTTOM;
                                    activity.addContentView(layout, new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
                                    ((FrameLayout.LayoutParams)layout.getLayoutParams()).gravity = Gravity.BOTTOM;
                                }
                            });
                        }
                    }
                }
            );
            adView.loadAd(request);
        }

    });   
}
}

我真的不知道是什么问题。我花了一整天的时间来寻找它,但没有任何解决方案:(

最佳答案

请记住,gravity 设置 View subview 的位置,而 layout_gravity 设置 View 在其父 View 中的位置。所以在你的例子中,你想设置 LinearLayout 的重力,这可以通过成员方法来完成。您还应该设置方向。

您的 run() 方法应该类似于:

   public void run(){
        layout = new LinearLayout(activity);
        layout.setGravity(Gravity.BOTTOM);
        layout.setOrientation(LinearLayout.VERTICAL);

        layout.addView(adView);

        LinearLayout.LayoutParams lllp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
        activity.addContentView(layout, lllp);

    }

关于android - 以编程方式设置 LinearLayout 的重力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25223374/

相关文章:

android - Xamarin.Forms.Shell : how to get the bottom TabBar height?

android - 在Android GeoCoder中指定要搜索的国家?

unity3d - 如何使 map 的边界和该 map 的平移相同?

html - CSS,尽管有容器,但将它们保持在一行上

JQuery 如何在向上或向下滚动时调整 div 大小

android - 将 OkHttp 作为依赖项添加到支持 Retrofit 1.x 的项目是否过时了?

java - 编辑文本背景颜色

c# - 如何管理 C 和 C# 之间的缓冲区

c# - MRTK (V2) 需要更新 Hololens?