【问题标题】:Programmatically set layout_gravity for a FrameLayout's Child?以编程方式为 FrameLayout 的子级设置 layout_gravity?
【发布时间】:2019-01-21 20:13:08
【问题描述】:

这似乎应该是微不足道的,但我无法弄清楚如何在我的一生中以编程方式为 FrameLayout 的孩子设置 layout_gravity。

关于 SO 有很多类似的问题,但在尝试了其中的 10 个之后,setGravity、新的 FrameLayout.LayoutParams 等解决方案似乎都不起作用。

下面是我想要实现的简化版本。

<FrameLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <TextureView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"/>
</FrameLayout>

但是,由于外部原因,我以编程方式将 TextureView 添加到 FrameLayout。

mCameraPreview = new CameraPreview(this, recordMode);
FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview_wrapper);
preview.addView(mCameraPreview);

当我尝试在 mCameraPreview 上设置 layout_gravity 时,它只为我提供了一个我不想要的重力选项。

这里有什么我遗漏的吗?

【问题讨论】:

标签: java android


【解决方案1】:

layout_gravity 属性位于FrameLayout.LayoutParams,而不是视图本身。你需要类似的东西:

mCameraPreview = new CameraPreview(this, recordMode);
FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview_wrapper);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
    FrameLayout.LayoutParams.MATCH_PARENT, 
    FrameLayout.LayoutParams.MATCH_PARENT, 
    Gravity.BOTTOM);
preview.addView(mCameraPreview, params);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-31
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-21
    • 2014-04-04
    • 2013-07-05
    相关资源
    最近更新 更多