繁体   English   中英

渲染后是否可以更改视图的高度

Is it possible to change the height of a view after rendering

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我在表格行中有以下视图:

<TableRow>
   <RelativeLayout>
       <RelativeLayout 
           android:id="@+id/back_layer"
           android:layout_width="match_parent"
           android:layout_height="match_parent"/>

       <LinearLayout 
           android:id="@+id/front_layer"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"/>

   </RelativeLayout>
</TableRow>

back_layer和front_layer彼此重叠。 两者应具有相同的大小并填充父视图。 back_layer必须在front_layer下,因此back_layer会在front_layer之前渲染。

问题在于front_layer具有任意高度。 由于渲染顺序的原因,在渲染back_layer时,back_layer无法知道front_layer的最终高度。 front_layer与父级的高度相同。 我很难让back_layer填充其父级高度。

我确定添加front_layer后可以添加back_layer。 正确的位置在哪里(我曾尝试在适配器中这样做,但是它不起作用)? 我该怎么办呢? 我将需要表的引用,并更改表中每一行的back_layer。 那是现实的吗?

3 个回复

等待正面测量,然后设置背面的高度:

final LinearLayout front = (LinearLayout) findViewById(R.id.front_layer);
final RelativeLayout back = (RelativeLayout) findViewById(R.id.back_layer);
front.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
    @Override
        public void onLayoutChange(View v, int l, int t, int r, int b, 
                                   int oldL, int oldT, int oldR, int oldB) {
        front.removeOnLayoutChangeListener(this);
        int height = front.getLayoutParams().height;
        back.setLayoutParams(new RelativeLayout
                .LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, height));
    }
});

包装相对布局没有尺寸,例如width = match_parent和height = wrap_content。 而且,如果您想重新测量某些内容,请创建自己的布局类并覆盖onmeasure方法。 然后,您可以自己测量视图。

如果我正确地假设了您的目标,而back_layer就像一个背景,则可以通过以下方式简化布局:

<TableRow>
    <FrameLayout
        android:id="@+id/back_layer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <LinearLayout
            android:id="@+id/front_layer"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <!-- content -->

        </LinearLayout>
    </FrameLayout>
<TableRow>
1 Laravel Livewire 视图渲染后是否可以更改变量?

我想加载视图然后更新变量数据以停止页面加载时间(加载大量数据)。 Laravel livewire 可以实现吗? 我试图让 livewire 呈现视图,然后在页面加载后更新公共变量。 就我而言,我将从 api 获取数据,因此我希望用户看到页面,然后我可以在获取数据的同时添加一些加载微调器。 但 ...

2 更改高度后,我的视图不可见

当我减小视图高度时,一切正常,但是当我再次尝试增大高度时,它变得不可见: 普通视图: 减少并增加视线高度后 希望您能理解我的问题,我不是以编程方式将视图设置为不可见,如何解决此问题? ...

2018-11-12 17:01:13 1 37   android
3 如何更改可渲染视图ARcore的宽度和高度?

可渲染对象的大小基于View对象的大小。 默认情况下,视图的每250dp变为可渲染对象的1米。 使用setSizer(ViewSizer)更改视图大小的计算方式。 这句话我听不懂。 我是否需要有关“视图”对象的更多详细信息? 如何更改可渲染视图的大小? ...

4 .Net MVC渲染后更改视图

是否有一种方法可以在剃刀渲染视图之后(即作为响应发送回浏览器之前)以序列化字符串的形式访问视图? 这个问题的动机是找到一种通过某种方式更改Razor编译内容来注入React Components的方法,作为在服务器上渲染/水合初始React Components的一种方式。 ...

5 平移动画后更改视图高度?

在我的活动中,我有一个BottomNavigationView和一个RecyclerView ,我想要做的是在滚动视图时隐藏BottomNavigationView ,我正在使用以下代码: 这工作正常,除了它仍然显示视图的边界,所以在隐藏BottomNavigationView我得到一个空矩形。 ...

6 更改视图高度后,getY()值不变

我有一个框架布局,可以根据不同的情况添加不同的高度视图。 我想知道在添加视图前后框架布局的Y轴位置。 因此,在添加视图之前,我在帧布局上调用getY()返回1891,这是正确的,一旦添加了新视图,它仍然返回1891,这是错误的,因为帧布局在屏幕上方较高,因此应该减少。 我已经检 ...

7 更改列表视图高度后,多次调用Android getView()

所以我有这个listview,其高度为fillparent ,并且主要是占据了屏幕大小的一半,但是之后我需要更改此listview的父级布局。 在这里,我开始注意到该应用程序异常延迟,经过一些诊断,我了解到适配器的getView()被调用了很多次, PS:当listview高度为wrap ...

8 滚动视图后,UITableView的高度已更改

我将UIScrollView与两个表视图一起使用。 其中之一是动态高度更改,因为我在运行时插入了单元格,而第二个表是固定高度。 当应用程序运行并将单元格添加到第一个表中时,一切正常,它更改了表的高度和scrollview的contentsize的高度。 问题是:当我滚动并scroll ...

10 更改后获得原始视图高度

在UIViewController ,调用self.view.frame.size.height = 99 ,如何获取视图的原始高度(不将其保存在变量中)? 我想到了UIScreen.mainScreen().bounds.height ,但是如果存在导航栏或其他某些栏,则可能不准确。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM