如何测量宽度和高度,然后在添加视图之前更改参数?

临时名称

我想告诉我的头衔,要尊重他旁边有个日期,因此我想将他的宽度改为背景的宽度,减去日期。但是有时getMeasuredWidth返回错误的值,或者只是返回0。如何执行此操作?每个项目都会调用此方法。

private void populateNewsItems(int pos, List<NewsItem> mFeedItems) {
    NewsItem newsItem = mFeedItems.get(pos);
    View newsContainer = getActivity().getLayoutInflater().inflate(R.layout.list_item_news, null);

    TextView background = (TextView) newsContainer.findViewById(R.id.background);
    TextView title = (TextView) newsContainer.findViewById(R.id.title);
    TextView colorBlock = (TextView) newsContainer.findViewById(R.id.colorBlock);
    TextView date = (TextView) newsContainer.findViewById(R.id.date);
    TextView description = (TextView) newsContainer.findViewById(R.id.description);

    title.setText(newsItem.getTitle());
    date.setText(newsItem.getDate());
    description.setText(newsItem.getDescription());

    title.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
    date.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
    background.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);

    RelativeLayout.LayoutParams paramsTitle = (RelativeLayout.LayoutParams) title.getLayoutParams();
    paramsTitle.width = background.getMeasuredWidth() - date.getMeasuredWidth();
    title.setLayoutParams(paramsTitle);

    Log.e("LOG", String.format("background width:%d ; date width:%d", background.getMeasuredWidth(), date.getMeasuredWidth()));
    linearLayout.addView(newsContainer);
}

它读取的日期宽度绝对正确。但这可能是因为在填充textview之前是相同的。

斯科特

在您要求尺寸时,实际上尚未绘制视图。如果您的布局是静态的,则最好在XML中完成,但是如果它是真正的动态,则您将需要使用OnGlobalLayoutListener来等待,直到首先绘制视图,然后再调整其大小。一些代码:

newsContainer.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        // title.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
        // date.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
        // background.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);

        RelativeLayout.LayoutParams paramsTitle = (RelativeLayout.LayoutParams) title.getLayoutParams();
        // paramsTitle.width = background.getMeasuredWidth() - date.getMeasuredWidth();
        paramsTitle.width = background.getWidth() - date.getWidth();
        title.setLayoutParams(paramsTitle);
        title.requestLayout();
    }
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获取活动片段视图的参数(如宽度和高度)?

来自分类Dev

如何在 Javascript 上测量旋转元素的宽度和高度?

来自分类Dev

如何获取视图的高度和宽度?

来自分类Dev

如何获取视图框的宽度和高度

来自分类Dev

如何更改JTextField的宽度和高度?

来自分类Dev

如何更改 SurfaceView 的宽度和高度?

来自分类Dev

创建视图时,如何测量视图的宽度?

来自分类Dev

Android布局参数仅更改宽度和高度

来自分类Dev

在调整窗口大小之前如何检查宽度和高度?

来自分类Dev

如何将视图框的高度和宽度导出为网页的高度和宽度

来自分类Dev

如何在SwiftUI中获取视图或屏幕的高度和宽度

来自分类Dev

如何在BindingAdapter中访问视图的宽度和高度?

来自分类Dev

如何为展开的视图设置动态宽度和高度(按钮)

来自分类Dev

更改UISwitch的宽度和高度

来自分类Dev

如何使用宽度和高度的百分比将子视图添加到父级RelativeLayout

来自分类Dev

如何根据屏幕更改高度和宽度(最少)

来自分类Dev

如何在Android中更改Switch的高度和宽度

来自分类Dev

如何更改JS库highcharts的高度和工具提示宽度?

来自分类Dev

如何在Flutter中更改列的宽度和高度?

来自分类Dev

如何更改jQuery Skitter Slideshow的宽度和高度?

来自分类Dev

如何更改CommandField ButtonType图像的宽度和高度

来自分类Dev

如何更改高度和宽度QTabWidget选项卡

来自分类Dev

如何更改 CSS 中指定的图像的宽度和高度

来自分类Dev

根据使用自动布局水平滚动的滚动视图更改视图的高度和宽度

来自分类Dev

根据屏幕宽度和高度更改div宽度和高度

来自分类Dev

使子项flex测量相同的高度和宽度的不同行

来自分类Dev

用于以像素为单位的图像高度和宽度测量的工具

来自分类Dev

测量大于屏幕的布局的宽度和高度

来自分类Dev

如何在不更改其宽度或高度的情况下更改视图的对齐方式

Related 相关文章

  1. 1

    如何获取活动片段视图的参数(如宽度和高度)?

  2. 2

    如何在 Javascript 上测量旋转元素的宽度和高度?

  3. 3

    如何获取视图的高度和宽度?

  4. 4

    如何获取视图框的宽度和高度

  5. 5

    如何更改JTextField的宽度和高度?

  6. 6

    如何更改 SurfaceView 的宽度和高度?

  7. 7

    创建视图时,如何测量视图的宽度?

  8. 8

    Android布局参数仅更改宽度和高度

  9. 9

    在调整窗口大小之前如何检查宽度和高度?

  10. 10

    如何将视图框的高度和宽度导出为网页的高度和宽度

  11. 11

    如何在SwiftUI中获取视图或屏幕的高度和宽度

  12. 12

    如何在BindingAdapter中访问视图的宽度和高度?

  13. 13

    如何为展开的视图设置动态宽度和高度(按钮)

  14. 14

    更改UISwitch的宽度和高度

  15. 15

    如何使用宽度和高度的百分比将子视图添加到父级RelativeLayout

  16. 16

    如何根据屏幕更改高度和宽度(最少)

  17. 17

    如何在Android中更改Switch的高度和宽度

  18. 18

    如何更改JS库highcharts的高度和工具提示宽度?

  19. 19

    如何在Flutter中更改列的宽度和高度?

  20. 20

    如何更改jQuery Skitter Slideshow的宽度和高度?

  21. 21

    如何更改CommandField ButtonType图像的宽度和高度

  22. 22

    如何更改高度和宽度QTabWidget选项卡

  23. 23

    如何更改 CSS 中指定的图像的宽度和高度

  24. 24

    根据使用自动布局水平滚动的滚动视图更改视图的高度和宽度

  25. 25

    根据屏幕宽度和高度更改div宽度和高度

  26. 26

    使子项flex测量相同的高度和宽度的不同行

  27. 27

    用于以像素为单位的图像高度和宽度测量的工具

  28. 28

    测量大于屏幕的布局的宽度和高度

  29. 29

    如何在不更改其宽度或高度的情况下更改视图的对齐方式

热门标签

归档