2016-11-21 5 views
0

У меня есть макет, в котором есть 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 кнопки была старой позицией + высотой только что показанной относительной компоновки, чтобы кнопки отображались чуть выше нее?

ответ

0

Это просто, все, что нам нужно сделать, это расположить кнопки по координате y нашего RelativeLayout.

Мы можем получить координату по телефону:

rl.getY(); 

И так как мы хотим кнопку, чтобы быть выше Р.Л., мы вычтем его высоту от координаты у ого, что-то вроде этого:

button.setY(rl.getY() - button.getHeight()); 
+0

Это не логично, так как getY из RL не изменится, а высота кнопок равна, поэтому результат будет одинаковым для всех из них. Это должно быть что-то с кнопкой getY и высотой RL, а не наоборот. –

+0

Извините, я, возможно, неправильно понял, можете ли вы опубликовать свою реализацию макета, чтобы я мог лучше понять? вы работаете с xml или создаете его динамически? – Khaled

Смежные вопросы