Как отобразить LinearLayout 100px ниже верхней части экрана? - PullRequest
0 голосов
/ 09 марта 2012

У меня есть FrameLayout (весь экран - FL), у которого есть openGLview и изображение заголовка в верхней части экрана. Теперь я хочу отобразить меню из двух кнопок, созданных с помощью LinearLayout.

Мое меню LL должно быть плавающим на макете кадра, на 100 пикселей ниже верхней части экрана.

Как мне этого добиться? я пытался с этим кодом, но не работает должным образом, меню отображается на 100 пикселей ниже верхней части экрана , но оно рисует верхнюю часть меню, и я не хочу этого, мне нужно, чтобы верхняя часть меню не окрашено цветом меню. Должно быть плавающее меню.

Я уверен, что есть другой способ нарисовать меню на 100 пикселей ниже верхней части экрана, не окрашивая верхнюю часть меню цветом меню.

Мой код (с проблемой цвета верхней части):

        ///////////////sub menu de shareit////////////////
    LinearLayout sharellContainer = new LinearLayout(this);
    sharellContainer.setOrientation(LinearLayout.HORIZONTAL);
    LinearLayout sharell = new LinearLayout(this);
    sharell.setOrientation(LinearLayout.VERTICAL);
    sharell.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    //LinearLayout.LayoutParams sharellParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    //sharellParams.gravity=Gravity.CENTER; 
    sharell.setPadding(10, shareit.getHeight()+80, 10, 10);
    sharell.setBackgroundColor(0xFF383838);
    //sharell.setLayoutParams(sharellParams);

    share= new ImageButton(this);
    selector(share, R.drawable.but_share_up,R.drawable.but_share_down);
    LinearLayout.LayoutParams shareParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    shareParams.setMargins(0, 0, 0, 10); //dejo un espacio entre este botón y el siguiente
    share.setLayoutParams(shareParams);
    sharell.addView(share);

    web= new ImageButton(this);
    selector(web, R.drawable.but_web_up,R.drawable.but_web_down);
    sharell.addView(web);

    sharellContainer.addView(sharell);
    sharellContainer.setGravity(Gravity.RIGHT); 

    //////////////////////////////////////////////////

. , .

        fl.addView(squareGLSurfaceView);
    fl.addView(rl);
    fl.addView(sharellContainer);
    setContentView(fl);     

Ответы [ 2 ]

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

Проблема в том, что вы используете padding вместо margins. Любые отступы получают цвет фона представления, поля - нет.
Вам нужно будет добавить поля к параметрам LayoutParams, которые вы предоставляете вашему представлению.

0 голосов
/ 09 марта 2012

Это будет очень легко, если вы используете макет XML. Вы также можете просмотреть то, что вы создаете и установить отдельные свойства. Это также позволяет вам отделить логику от представлений и придерживаться шаблона проектирования MVVM, чтобы облегчить выполнение будущих обновлений, предоставив вам более гибкую систему.

...