有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓在java代码中设置RelativeLayout

我很难让两个文本视图在java代码中相互重叠。以下是我正在试验的代码:

/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);

        layout = new RelativeLayout(this);
        text1 = new TextView(this);
        text1.setText("1");
        text2 = new TextView(this);
        text2.setText("2");

        RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT);
        RelativeLayout.LayoutParams q = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT);

        q.addRule(RelativeLayout.BELOW, layout.getId());
        text1.setLayoutParams(q);
        layout.addView(text1);


        p.addRule(RelativeLayout.BELOW,text1.getId());
        text2.setLayoutParams(p);
        layout.addView(text2);

        setContentView(layout);
    }

这将两个文本视图堆叠在同一行上,但我希望TextView text2显示在TextView text1下面,因此在我的应用程序中,我希望以下内容显示为输出:

1
2

我用“addRule”方法尝试了各种各样的事情,我不确定为什么这不起作用。我想知道在没有XML的情况下如何做到这一点,因为我计划构建一个方法库,它可以构建一个布局,通过编辑数组可以轻松调整布局


共 (3) 个答案

  1. # 1 楼答案

    您可以为此使用xml布局:

    在相对布局中 设置第一个文本视图并为其分配一些id 对于下一个文本视图,我们可以指定参数 android:layout_down=“上面文本视图的id” 这样我们就可以在第一个文本视图下面看到第二个文本视图

  2. # 2 楼答案

    你的TextViews没有id(默认id是-1)。。。在初始化之后再做如下操作:

    text1.setId(1111); // 1111 is just an example,
    text2.setId(2222); // just make sure the id are unique
    
  3. # 3 楼答案

    我不认为你想在RelativeLayout下面布局text1视图,因为你在小时候把所有视图都添加到了它,对吗?尝试删除第一条规则;该规则要求文本视图低于它所在的视图

    编辑:另一个帮助是显式设置布局所依据的视图的id

    所以这里:

    text1.setId(2);
    p.addRule(RelativeLayout.BELOW,2);