Android ScrollView在相对布局中遇到麻烦

Sre*_*h G 1 android android-layout

在我的Android应用程序中,我需要一个如下所示的布局

在此输入图像描述

我使用相对布局作为父布局,使用4个相对布局来排列内容 - 标题布局1,标题布局2,内容布局(objRLScrollView -scroll视图在此布局中)和页脚布局

我使用下面的代码来创建上面的布局

    public class Login1 extends Activity {




     @Override
        public void onCreate(Bundle savedInstanceState) {

          super.onCreate(savedInstanceState);

           this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
           this.requestWindowFeature(Window.FEATURE_NO_TITLE);

            RelativeLayout objRLBody=new RelativeLayout(this);
            objRLBody.setId(1001);
            RelativeLayout.LayoutParams objLLBodyParams=new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
            objRLBody.setBackgroundColor(Color.parseColor("#d8e4f3"));
            objRLBody.setLayoutParams(objLLBodyParams); 


            /* header portion starts here*/

            RelativeLayout objRLActionBar=new RelativeLayout(this);
            objRLActionBar.setId(1002);
            RelativeLayout.LayoutParams objRLActionBarParams=new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,50);
            objRLActionBarParams.addRule(RelativeLayout.ALIGN_PARENT_TOP); 
            objRLActionBar.setLayoutParams(objRLActionBarParams);
            objRLActionBar.setBackgroundColor(Color.parseColor("#2e4862"));



            objRLBody.addView(objRLActionBar);


            RelativeLayout objRLSelectedActionBar=new RelativeLayout(this);
            objRLSelectedActionBar.setId(1003);
            RelativeLayout.LayoutParams objRLSelectedActionBarParams=new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);
            objRLSelectedActionBarParams.addRule(RelativeLayout.BELOW,objRLActionBar.getId()); 
            objRLSelectedActionBar.setLayoutParams(objRLSelectedActionBarParams);
            objRLSelectedActionBar.setBackgroundColor(Color.WHITE);
            objRLSelectedActionBar.setGravity(Gravity.CENTER|Gravity.LEFT);


            TextView objTVSelectedAction = new TextView(this); 
            RelativeLayout.LayoutParams objTVSelectedActionParams=new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
            objTVSelectedAction.setLayoutParams(objTVSelectedActionParams);
            objTVSelectedAction.setGravity(Gravity.CENTER);
            objTVSelectedAction.setTextColor(Color.BLACK);
            objTVSelectedAction.setTextSize(TypedValue.COMPLEX_UNIT_DIP,18);
            objTVSelectedAction.setText("Scroll Test"); 
            objTVSelectedAction.setTypeface(null, Typeface.BOLD);
            objTVSelectedAction.setPadding(4, 0, 4, 0);
            objTVSelectedAction.setId(1004);
            objRLSelectedActionBar.addView(objTVSelectedAction);  


            objRLBody.addView(objRLSelectedActionBar);

            /* header portion ends here*/



            /* Relative layout which hold scroll view*/
            RelativeLayout objRLScrollView = new RelativeLayout(this); 
            objRLScrollView.setId(1005);
            objRLScrollView.setBackgroundColor(Color.parseColor("#d8e4f3"));
            objRLScrollView.setGravity(Gravity.CENTER_VERTICAL|Gravity.CENTER_HORIZONTAL);
            RelativeLayout.LayoutParams objRLScrollViewParams = new RelativeLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
            objRLScrollViewParams.addRule(RelativeLayout.BELOW ,objTVSelectedAction.getId());


            ScrollView  objScrollView=new ScrollView(this);
            objScrollView.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
            objScrollView.setFillViewport(true);



            /* contents */

            RelativeLayout objRLContent = new RelativeLayout(this); 
            objRLContent.setId(1006);
            objRLContent.setBackgroundColor(Color.parseColor("#d8e4f3"));
            objRLContent.setGravity(Gravity.CENTER_VERTICAL|Gravity.CENTER_HORIZONTAL);
            RelativeLayout.LayoutParams objRLContentParams = new RelativeLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
           // objRLContentParams.addRule(RelativeLayout.BELOW ,objTVSelectedAction.getId()); 
            objRLContent.setLayoutParams(objRLContentParams);                


                  /* adding layouts containing Edittext (for testing scroll view) */

                RelativeLayout rl2= addEditText(objRLContent,null,1);
                RelativeLayout rl3= addEditText(objRLContent,rl2,2);
                RelativeLayout rl4= addEditText(objRLContent,rl3,3);
                RelativeLayout rl5= addEditText(objRLContent,rl4,4);
                RelativeLayout rl6= addEditText(objRLContent,rl5,5);
                RelativeLayout rl7= addEditText(objRLContent,rl6,6);
                RelativeLayout rl8= addEditText(objRLContent,rl7,7);
                RelativeLayout rl9= addEditText(objRLContent,rl8,8);
                RelativeLayout rl10= addEditText(objRLContent,rl9,9);
                RelativeLayout rl11= addEditText(objRLContent,rl10,10);
                RelativeLayout rl12= addEditText(objRLContent,rl11,11);
                RelativeLayout rl13= addEditText(objRLContent,rl12,12);






             objScrollView.addView(objRLContent);  // adding contents to scroll view


             objRLScrollView.addView(objScrollView);  // Adding scroll view to a relative layout


             objRLBody.addView(objRLScrollView);  // adding relative layout to body layout



             // adding footer to body

               RelativeLayout objRLFooter=new RelativeLayout(this);
               RelativeLayout.LayoutParams objRLFooterParams=new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,25);
               objRLFooterParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM,objRLBody.getId()); 
               objRLFooter.setLayoutParams(objRLFooterParams);
               objRLFooter.setBackgroundColor(Color.parseColor("#2e4862"));
               objRLFooter.setGravity(Gravity.CENTER);
               objRLBody.addView(objRLFooter); 




               this.setContentView(objRLBody); 






      }




     private RelativeLayout addEditText(RelativeLayout objRLContent,RelativeLayout layoutAbove,int i   ) {



            RelativeLayout objRLEditText = new RelativeLayout(this); 
            objRLEditText.setId(1100+i);
            RelativeLayout.LayoutParams objRLEditTextParams = new RelativeLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
            if(layoutAbove!=null)
            objRLEditTextParams.addRule(RelativeLayout.BELOW,layoutAbove.getId());
            objRLEditText.setLayoutParams(objRLEditTextParams);
            objRLEditText.setPadding(8, 2, 8, 2);

             EditText objETData = new EditText(this);
             objETData.setId(1300+i);
             RelativeLayout.LayoutParams objETDataParams=new RelativeLayout.LayoutParams(200,LayoutParams.WRAP_CONTENT);
             objETData.setLayoutParams(objETDataParams);
             objETData.setPadding(8, 0, 8, 0);
             objETData.setTextSize(TypedValue.COMPLEX_UNIT_DIP,18);
             objETData.setText(""+i);
             objETData.setSingleLine(true);
             objRLEditText.addView(objETData);           

             objRLContent.addView(objRLEditText);

             return objRLEditText;



     }


}
Run Code Online (Sandbox Code Playgroud)

以上代码给出如下所示的put

在此输入图像描述

由于存在scrollView,标题布局变得不可见.我的代码出了什么问题?我该怎么做才能获得具有固定页眉和页脚的可滚动内容的布局?请帮助.

Ben*_*oli 6

1-将ScrollView的高度和宽度设置为match_parent.

2-将Scrollview的顶部和底部填充设置为等于顶部和底部条形高度.

3-将顶部栏的对齐方式设置为alignparenttop

4-将底栏的对齐方式设置为alignparentbottom

注意:如果您想为操作栏提供良好的兼容性库,请考虑使用ActionBarSherlock.