Выравнивание линейного макета внутри RelativeLayout по центру и слева - PullRequest
0 голосов
/ 05 марта 2012

В настоящее время я пытался выровнять мою линейную компоновку по левому краю и центру, но в настоящее время не могу заставить это работать. Смотрите код ниже:

    CustomLinearLayout sideMenu = new CustomLinearLayout(this);

    RelativeLayout.LayoutParams sideMenuParams = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,  LayoutParams.WRAP_CONTENT);
    sideMenuParams.addRule(RelativeLayout.CENTER_VERTICAL);
    sideMenuParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);   

    sideMenu.setLayoutParams(sideMenuParams);   
    sideMenu.setOrientation(LinearLayout.VERTICAL);
    sideMenu.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    sideMenu.setBackgroundColor(Color.TRANSPARENT);
    //sideMenu.setGravity(Gravity.CENTER);

    sideMenu.addView(AppSoups);
    sideMenu.addView(salads);
    sideMenu.addView(ribs);
    sideMenu.addView(favorites);
    sideMenu.addView(sandwiches);
    sideMenu.addView(sides);
    sideMenu.addView(desserts);

    RelativeLayout screenLayout = new RelativeLayout(this);
    screenLayout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
    screenLayout.setBackgroundResource(R.drawable.body_bkgd);
    screenLayout.addView(sideMenu);

    setContentView(screenLayout);

CustomLinearLayout - это просто класс, который расширяет LinearLayout для выполнения некоторых пользовательских рисунков. В любом случае, что я здесь делаю не так? Пока что он выравнивается по левому краю и верхней части относительного макета, но я не могу получить его по центру. Так же, как примечание, оба или одно из моих правил не работают в сочетании с установкой LinearLayout в центр (я прокомментировал это в коде). Наконец, представления, которые я добавляю в линейный макет, - это просто текстовые представления - просто FYI (код не показан)

Ответы [ 2 ]

2 голосов
/ 05 марта 2012

Я думаю, что вы "переопределяете параметры макета, которые вы установили в строке 5, новыми параметрами макета, которые вы устанавливаете в строке 7, поэтому

    sideMenuParams.addRule(RelativeLayout.CENTER_VERTICAL);
    sideMenuParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);  

на самом деле не влияет

1 голос
/ 05 марта 2012

Здесь

screenLayout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 

попробуйте изменить WRAP_CONTENT на FILL_PARENT

...