Как отобразить LinearLayout на 100 пикселей ниже верхней части экрана?

StackOverflow https://stackoverflow.com//questions/9636217

Вопрос

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

Мое полное меню должно быть плавающим на framelayout, на 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);     
Это было полезно?

Решение

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top