2016-11-21 11 views
0

GONEの可視性を持つRelativeLayoutのレイアウトがあります。このrlは、可視性をvisibleに設定すると、フラグメントの一番下に表示されるボタンのレイアウトです。 RLはまだ表示されていませんが、2つのボタンがあり、私はそれを可視に設定すると、RLがボタンをカバーしています。ビューの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

これは簡単です。ボタンをRelativeLayoutのy座標に配置するだけです。

私たちは、yが呼び出すことで座標を取得することができます:RLの座標

rl.getY(); 

そして、我々はボタンはRLの上になりたいので、私たちはYからその高さを差し引きます、このような何か:

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

RLのgetYは変更されず、ボタンの高さも同じであるため論理的ではないため、結果はすべて同じになります。それは、ボタンのgetYとRLの高さで何かでなければなりません。 –

+0

申し訳ありませんが誤解している可能性があります。レイアウトの実装を投稿して、より理解を深めることができますか?あなたはxmlを使って作業していますか、それとも動的に作成していますか? – Khaled

関連する問題