Как отобразить LinearLayout на 100 пикселей ниже верхней части экрана?
-
10-12-2019 - |
Вопрос
У меня есть 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, поэтому будущие обновления легче выполнять, предоставляя вам более гибкую систему.