当前位置: 首页 > 知识库问答 >
问题:

使布局适合视图而不管它们添加到布局中的顺序?

唐裕
2023-03-14

我有一个垂直方向的LinearLayout,我试图向它添加三个子视图。一个视图是一个小的,50px高的视图,只在其中绘制一个框,第二个视图是单选按钮的水平列表,第三个视图是一个图表。

如果我最后添加图形,所有的内容都适合屏幕,但如果我首先添加图形,它将所有内容推离屏幕,它成为屏幕上唯一的视图。图是我的一个自定义控件,它希望尽可能大(它的onmeasure函数只返回提供的宽度和高度),我认为这就是问题所在。但我想保持它尽可能大,并有布局适合视图,无论他们的顺序添加。

这可能吗?如果是,我该如何完成?最后,我试图将图形放在上面,其他两个控件放在下面,但是如果我先添加图形,它会消耗整个屏幕。

public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);

        layout.addView(new MovingBox(this));

        RadioGroup radioGroup = new RadioGroup(this);
        radioGroup.setOrientation(RadioGroup.HORIZONTAL);
        radioGroup.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));

        RadioButton button = new RadioButton(this);
        button.setText("Light");
        button.setLayoutParams(new RadioGroup.LayoutParams(RadioGroup.LayoutParams.MATCH_PARENT, RadioGroup.LayoutParams.WRAP_CONTENT, 1));
        radioGroup.addView(button);

        button = new RadioButton(this);
        button.setText("Dark");
        button.setLayoutParams(new RadioGroup.LayoutParams(RadioGroup.LayoutParams.MATCH_PARENT, RadioGroup.LayoutParams.WRAP_CONTENT, 1));
        radioGroup.addView(button);

        button = new RadioButton(this);
        button.setText("Colorful");
        button.setLayoutParams(new RadioGroup.LayoutParams(RadioGroup.LayoutParams.MATCH_PARENT, RadioGroup.LayoutParams.WRAP_CONTENT, 1));
        radioGroup.addView(button);

        layout.addView(radioGroup);

        // If I move these next to lines just below layout.setOrientation(...) it becomes the only thing visible
        TweenerControl tw = new TweenerControl(this);
        layout.addView(tw);

        setContentView(layout);
    }
}

首先添加图形:(只有图形可见)

共有1个答案

锺离晗昱
2023-03-14

我在这方面做了更多的工作,我提出的解决方案是不使用LinearLayout,而是使用RelativeLayoutRelativeLayout试图定位和调整事物的大小,以便它们适当地适合,而LinearLayout只获取事物的大小并按自上而下的顺序排列,其中LinearLayout中较高的项与LinearLayout中较低项的大小无关。

 类似资料:
  • 英文原文:http://emberjs.com/guides/views/adding-layouts-to-views/ 视图可以拥有一个次模板来包裹其主模板。如同模板一样,布局是可以插入到视图标签下的Handlebars模板。 通过设置layoutName属性来配置视图的布局模板。 而布局模板通过Handlebars的{{yield}}助手来指定在哪里插入主模板。视图渲染后的template的

  • 我有一个嵌套的布局,如下所示: 我现在遇到的问题是,由于我所有的数据项都在子1或子2中,如果我添加或删除一个项,子Linearlayout将以animateLayoutChanges的效果设置动画,但父布局将不做任何动画。(对于所有线性布局,我将设置为)。尤其是当我删除子1中的一个项目时,动画效果会变得奇怪(基本上,当子1仍在制作动画时,子2会跳起来)。 有人知道怎么解决这个问题吗? 谢谢 更新

  • 在此处输入图像描述 我有一份父母名单,每个人都有零个或多个孩子,我用回收视图给父母看。我想向家长展示每个回收人员视图项目的标题,下面是向所有孩子展示向孩子展示的最好方式是什么?是否适合在列表视图中显示孩子,或者为每个孩子添加动态视图,如果是的话,如何做到这一点?我已经附上了布局的图像,请检查我的意思,谢谢 在此处输入图像描述

  • 在一个GUI程序里,布局是一个很重要的方面。布局就是如何管理应用中的元素和窗口。有两种方式可以搞定:绝对定位和PyQt5的layout类 绝对定位 每个程序都是以像素为单位区分元素的位置,衡量元素的大小。所以我们完全可以使用绝对定位搞定每个元素和窗口的位置。但是这也有局限性: 元素不会随着我们更改窗口的位置和大小而变化。 不能适用于不同的平台和不同分辨率的显示器 更改应用字体大小会破坏布局 如果我

  • 在一个 GUI 程序里,布局是一个很重要的方面。布局就是如何管理应用中的元素和窗口。有两种方式可以搞定:绝对定位和 PyQt5 的 layout 类 绝对定位 每个程序都是以像素为单位区分元素的位置,衡量元素的大小。所以我们完全可以使用绝对定位搞定每个元素和窗口的位置。但是这也有局限性: 元素不会随着我们更改窗口的位置和大小而变化。 不能适用于不同的平台和不同分辨率的显示器 更改应用字体大小会破坏

  • 我有一个全屏活动,其中某些布局元素隐藏起来,让位于容器内的一个片段(FrameLayout)。布局如下所示: 片段布局如下所示: 如您所见,在我的片段布局中,我包含了另一个名为input_view的布局。其布局文件如下所示: 这是从以下来源获得的幻灯片面板:https://github.com/mancj/SlideUp-Android,它主要是一个编辑文本视图,在回收器视图项目的单击事件上向上滑