我创建了一个滚动视图,其中包含我的活动的所有布局。在滚动视图内部,我创建了一个具有垂直方向的线性布局,并在其中使用 for 循环创建了一些包含图像和文本视图的相对布局。我需要滚动视图,因为在某些时候我可以在布局中有很多图像并且需要滚动屏幕。没关系,一切正常。我的问题是之后。正如您在代码底部看到的那样,我创建了最后一个包含一个简单按钮的相对布局。我的问题是这种布局不会停留在页面底部,而是会相对于屏幕上下移动。因此,例如,如果只有一个图像,则最后一个相对布局位于页面顶部,附加到图像上。如果有很多图像,它位于页面底部。我想要做的是最后一个相对布局始终保持在页面底部,即使屏幕内只有一个图像。如何修改我的代码以实现我的目标?
//SCROLL VIEW
ScrollView scrollView = new ScrollView(this); //create a new scrollView
scrollView.setBackground(getResources().getDrawable(R.drawable.background)); //give the background gradient
scrollView.setLayoutParams(new ScrollView.LayoutParams(ScrollView.LayoutParams.MATCH_PARENT, //set the main params about the dynamic size of the scrollView
ScrollView.LayoutParams.MATCH_PARENT));
scrollView.setPadding(0, 20, 0, 0);
//LINEAR LAYOUT
LinearLayout linearLayout = new LinearLayout(this); //create a new linearLayout
linearLayout.setOrientation(LinearLayout.VERTICAL); //set the layout orientation
linearLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
for (i=0; i<= 3; i++) {
//RELATIVE LAYOUT
RelativeLayout relativeLayout = new RelativeLayout(this); //create a new relative layout
relativeLayout.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, //set main params about the width and height
RelativeLayout.LayoutParams.FILL_PARENT));
relativeLayout.setBackgroundColor(getResources().getColor(R.color.grayColor)); //set background color
LinearLayout.LayoutParams relativeParams = new LinearLayout.LayoutParams(
new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
relativeParams.setMargins(20, 20, 20, 0);
relativeLayout.setLayoutParams(relativeParams); //set declared params about layout to the relativeLayout
relativeLayout.requestLayout();
//IMAGE VIEW
ImageView selectedPhoto = new ImageView(this); //create a new imageView
//imageView code here
//TEXT VIEWS
TextView numberCopies = new TextView(this); //create new TextView
numberCopies.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT));
numberCopies.setGravity(Gravity.CENTER); //set position to the center in confront to the parent
RelativeLayout.LayoutParams layoutParamsNumberCopies = (RelativeLayout.LayoutParams) numberCopies.getLayoutParams();
layoutParamsNumberCopies.addRule(RelativeLayout.CENTER_HORIZONTAL); //add a rule to the layout params. We put his position at the horizontal center of the relative layout
numberCopies.setLayoutParams(layoutParamsNumberCopies); //set the layout rules to the textView
TextView priceCopies = new TextView(this);
priceCopies.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT));
priceCopies.setGravity(Gravity.CENTER);
numberCopies.setPadding(25, 25, 25, 25);
priceCopies.setTextColor(getResources().getColor(R.color.redColor));
RelativeLayout.LayoutParams layoutParamsPriceCopies = (RelativeLayout.LayoutParams) priceCopies.getLayoutParams();
layoutParamsPriceCopies.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
layoutParamsPriceCopies.addRule(RelativeLayout.CENTER_VERTICAL);
priceCopies.setLayoutParams(layoutParamsPriceCopies);
relativeLayout.addView(selectedPhoto);
relativeLayout.addView(numberCopies);
relativeLayout.addView(priceCopies);
linearLayout.addView(relativeLayout);
}
//RELATIVE LAYOUT
RelativeLayout relativeLayoutOpenButton = new RelativeLayout(this); //create a new relative layout for add the main buttons
relativeLayoutOpenButton.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, //add the params for the width and height
RelativeLayout.LayoutParams.WRAP_CONTENT));
relativeLayoutOpenButton.setBackgroundColor(getResources().getColor(R.color.blackColor)); //set the black background
relativeLayoutOpenButton.setPadding(10, 10, 10, 10); //set the padding
LinearLayout.LayoutParams relativeParamsOpenButton = new LinearLayout.LayoutParams(
new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
relativeParamsOpenButton.setMargins(0, 20, 0, 0); //put a top margin for separate the black bar from the last image line
relativeParamsOpenButton.gravity = Gravity.BOTTOM; //set the gravity to the bottom
relativeLayoutOpenButton.setLayoutParams(relativeParamsOpenButton);
relativeLayoutOpenButton.requestLayout();
Button confirmButton = new Button(this); //create a new button
//code button here
relativeLayoutOpenButton.addView(confirmButton); //add the button to the view
scrollView.addView(linearLayout);
setContentView(scrollView);
}
谢谢