重力设置动态不适用于 Framelayout

Posted

技术标签:

【中文标题】重力设置动态不适用于 Framelayout【英文标题】:Gravity set dynamically not working with Framelayout 【发布时间】:2017-08-07 06:16:05 【问题描述】:
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
                            params.gravity = Gravity.BOTTOM;
                            myFrameLayout.setLayoutParams(params);

我的框架布局内只有一个文本视图,我想在某些情况下将其重力动态设置为底部。我正在尝试使用此代码,但它不起作用。

 <FrameLayout
        android:id="@+id/container"
        android:layout_
        android:layout_
        android:layout_gravity="top|center_horizontal">

        <TextView
            android:id="@+id/preview_content"
            android:layout_
            android:layout_ />
    </FrameLayout>

【问题讨论】:

设置为文本视图而不是框架布局。 ((FrameLayout.LayoutParams) preview_content.getLayoutParams()).gravity = Gravity.BOTTOM 我按照你的说法试过了,但还是不行 谁能告诉我,params.gravity 相当于gravity 或layoutGravity? 【参考方案1】:
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
                    params.gravity = Gravity.BOTTOM;
                    myTextView.setLayoutParams(params);

使用此代码将参数设置为 textview 的实例。

【讨论】:

【参考方案2】:

也许你正在尝试在 OnCreate 上做,而框架布局尚未创建,你可以尝试使用

ViewTreeObserver viewTreeObserver = myFrameLayout.getViewTreeObserver();
            if (viewTreeObserver.isAlive()) 


    viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() 
                @Override
                public void onGlobalLayout() 
                    myFrameLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this);

FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
                    params.gravity = Gravity.BOTTOM;
                    myFrameLayout..setLayoutParams(params);
    
  

这将仅在创建框架布局后设置重力。

【讨论】:

【参考方案3】:

尝试使用线性布局而不是框架布局或在框架布局中使用线性布局。

【讨论】:

以上是关于重力设置动态不适用于 Framelayout的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 动态高度不适用于尺寸类

自定义 TextView 字体不适用于从 java android 设置文本

Routerlinkactive在Angular 8中的页面加载时不适用于动态生成的路由

为 android ListView 设置空视图不适用于在 Java 中创建的视图

禁用列排序不适用于多个 angularjs 数据表

为啥音译不适用于动态添加输入字段?