У меня есть макет, в котором есть RelativeLayout
с видимостью GONE
. Этот rl представляет собой макет для панели с кнопками, которые отображаются в нижней части фрагмента при установке видимости на visible
. Пока RL все еще не отображается, есть 2 кнопки, и когда я устанавливаю его на видимое, RL закрывает кнопки.Set Views Y позиция программно
Что я хочу сделать, просто переместите кнопки вверх над этой полосой, которая станет видимой. То, что я пытался сделать это:
rl.setVisibility(View.VISIBLE);
rl.post(new Runnable()
{
int dpToPx(final int dp)
{
return (int) (dp * getResources().getSystem().getDisplayMetrics().density + 0.5f);
}
@Override
public void run() {
int h = rl.getHeight(); //height is ready
h = dpToPx(h);
ImageButton button = (ImageButton)inflate.findViewById(R.id.button1);
float y = button.getY();
button.setY((float)h+y - 1100);
ImageButton button2 = (ImageButton)inflate.findViewById(R.id.button2);
y = button2.getY();
button2.setY((float)h+y);
}
});
Кнопка с -1100 (это число было только то, что я проверил, чтобы увидеть, как это влияет на положение кнопки и не будет оставаться там, очевидно) показывает, где я хочу это будет. Другая кнопка настолько высокая или низкая, что больше не видно.
Как установить положение, чтобы позиция Y кнопки была старой позицией + высотой только что показанной относительной компоновки, чтобы кнопки отображались чуть выше нее?
Это не логично, так как getY из RL не изменится, а высота кнопок равна, поэтому результат будет одинаковым для всех из них. Это должно быть что-то с кнопкой getY и высотой RL, а не наоборот. –
Извините, я, возможно, неправильно понял, можете ли вы опубликовать свою реализацию макета, чтобы я мог лучше понять? вы работаете с xml или создаете его динамически? – Khaled