Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何以编程方式在布局文件底部添加多个视图而不使它们重叠_Android - Fatal编程技术网

Android 如何以编程方式在布局文件底部添加多个视图而不使它们重叠

Android 如何以编程方式在布局文件底部添加多个视图而不使它们重叠,android,Android,我已使用Stack Exchange和其他工具上的资源成功地将新视图添加到布局的底部。但是,如果我尝试以编程方式添加第二个视图,则这两个视图似乎重叠 此代码块成功地将新视图添加到我的布局文件中 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main)

我已使用Stack Exchange和其他工具上的资源成功地将新视图添加到布局的底部。但是,如果我尝试以编程方式添加第二个视图,则这两个视图似乎重叠

此代码块成功地将新视图添加到我的布局文件中

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        RelativeLayout activityMain = (RelativeLayout)findViewById(R.id.activity_main);

        // First view
        View playControlsPanelMinimized = new View(this);
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        params.width = ViewGroup.LayoutParams.MATCH_PARENT;
        final float scale = activityMain.getContext().getResources().getDisplayMetrics().density;
        float dps = 10;
        int pixels = (int) (dps * scale + 0.5f);
        params.height = pixels;
        playControlsPanelMinimized.setLayoutParams(params);
        playControlsPanelMinimized.setBackgroundColor(Color.parseColor("#00FFFF"));
        params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
        activityMain.addView(playControlsPanelMinimized);
然而,当我通过简单地用新变量重复代码来添加第二个视图时,我看到了一个重叠行为,结果我只看到了第一个视图

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        RelativeLayout activityMain = (RelativeLayout)findViewById(R.id.activity_main);

        // First view
        View playControlsPanelMinimized = new View(this);
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        params.width = ViewGroup.LayoutParams.MATCH_PARENT;
        final float scale = activityMain.getContext().getResources().getDisplayMetrics().density;
        float dps = 10;
        int pixels = (int) (dps * scale + 0.5f);
        params.height = pixels;
        playControlsPanelMinimized.setLayoutParams(params);
        playControlsPanelMinimized.setBackgroundColor(Color.parseColor("#00FFFF"));
        params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
        activityMain.addView(playControlsPanelMinimized);

        // Second View
        View playControlsPanelMinimized2 = new View(this);
        RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        params.width = ViewGroup.LayoutParams.MATCH_PARENT;
        final float scale2 = activityMain.getContext().getResources().getDisplayMetrics().density;
        float dps2 = 10;
        int pixels2 = (int) (dps2 * scale2 + 0.5f);
        params2.height = pixels2;
        playControlsPanelMinimized2.setLayoutParams(params2);
        playControlsPanelMinimized2.setBackgroundColor(Color.parseColor("#00FFFF"));
        params2.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
        activityMain.addView(playControlsPanelMinimized2);
编辑:

我将
activity\u main.xml
更改为LinearLaout,并相应地调整了变量,但现在我不再看到视图

        LinearLayout activityMain = (LinearLayout)findViewById(R.id.activity_main);

        // First View
        View playControlsPanelMinimized = new View(this);
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        params.width = ViewGroup.LayoutParams.MATCH_PARENT;
        final float scale = activityMain.getContext().getResources().getDisplayMetrics().density;
        float dps = 10;
        int pixels = (int) (dps * scale + 0.5f);
        params.height = pixels;
        playControlsPanelMinimized.setLayoutParams(params);
        playControlsPanelMinimized.setBackgroundColor(Color.parseColor("#00FFFF"));
        //params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
        activityMain.addView(playControlsPanelMinimized);
编辑

我正在尝试一种新的技术,使用相对布局方法,但到目前为止没有任何效果

View playControlsPanelMinimized = new LinearLayout(this);
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        params.width = ViewGroup.LayoutParams.MATCH_PARENT;
        final float scale = activityMain.getContext().getResources().getDisplayMetrics().density;
        float dps = 10;
        int pixels = (int) (dps * scale + 0.5f);
        params.height = pixels;
        playControlsPanelMinimized.setLayoutParams(params);
        playControlsPanelMinimized.setBackgroundColor(Color.parseColor("#00FFFF"));
        params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
        activityMain.addView(playControlsPanelMinimized);

        View A = new View(this);
        View B = new View(this);
        RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        A.setLayoutParams(params2);
        B.setLayoutParams(params2);

        playControlsPanelMinimized.addView(A);
        playControlsPanelMinimized.addView(B);

用水平或垂直方向的线性布局替换您的相对活动_main

  • 使用lnearLayout而不是相对布局,可能需要使用weightsum 将方向设置为垂直/水平
  • 将视图置于其他视图的右侧,并在xml中设置它
查看我的新问题查看我的新问题