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