2012-03-02 14 views
1

私は相対レイアウトでカスタムビューを中央に配置しようとしています。このイメージは回転するので、レイアウトの中心から外れることはありません。今は左上隅に表示されています。あなたが任意のアイデアを持っていますか私の相対的なXMLレイアウトLayoutParamsを使用してRelativeLayoutでカスタムビューを中央に配置

<RelativeLayout 
      android:id="@+id/lay_container" 
      android:layout_width="200dip" 
      android:layout_height="200dip" 
      android:layout_alignParentRight="true" 
      android:layout_below="@+id/txt_1" 
      android:layout_marginRight="45dp" 
      android:layout_marginTop="56dp" 
      android:padding="10dip" /> 


container = (RelativeLayout) findViewById(R.id.lay_container); 

bmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.charlie_sheen); 

rotate_view = new RotationView(this, bmap); 

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 

params.addRule(RelativeLayout.CENTER_IN_PARENT); 

rotate_view.setLayoutParams(params); 
container.addView(rotate_view); 

ここにある:ここに私のコードはありますか?私はこの仮説にはおそらく単純な解決策があることを知っていますが、私は答えを見つけることができません。 LayoutParameterを中央に設定すると、レイアウトをレイアウトの中心に合わせる必要がありますか?

ご協力いただきありがとうございました。

答えて

2

全体的にカスタムビューを追加するコードが正しいように見えます。これは弱い提案かもしれませんが、ビューのカスタマイズによって生じた可能性のある問題を除外するために、2つの方法のいずれかでコードを修正することができます。

オプション1:addRule()の明示的なフォームを使用し、すなわち

params.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE); 

オプション2:addView()の明示的なフォームを使用し、すなわち

//Omit the line above this one 
container.addView(rotate_view, params); 
、ビュー自体でのparamsを設定していません

これ以外にも、カスタムビューの洞察、具体的にどのように自分自身を測定するのか(それは親を埋めることを試みていないのでしょうか?

HTH

+0

彼はDevunwired、あなたの助けに感謝します。私はあなたの提案を試みました、そして、私はまだ同じ問題を抱えています。私はビットマップよりも100px大きいため、カスタムビュークラスのonMeasureをオーバーライドしました。 (ビットマップは回転するため、これを実行するためのスペースが必要です)。私は回答にコードを掲載しました。私はいくつかの他のアイデアを持っていた: - 私は私のカスタムレイアウトをカスタムビューとしてカスタムビューを追加しようとすると、それを膨らませることができると思った – user1164429

+0

イメージが 'RotationView'の中にセンタリングされていることを確認できますか?これを行う最も簡単な方法は、カスタムビューに背景色を付けることです。そのため、境界線が実際に親との関係にあるかどうかを確認できます。私は問題が 'RotationView'のどこかにあると考えています。 – Devunwired

0

Ok Devunwired私はそれを行います。

ここで私はどのようにイメージをセンタリングしていますか?

1)BitmapDrawable setGravity(Gravity.CENTER)プロパティを使用してキャンバス内の画像をセンタリングしています。

2)私は私の相対レイアウトでRotationViewを中心にしています:

<RelativeLayout 
    android:id="@+id/image_container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_below="@+id/txt_1" 
    android:layout_centerHorizontal="true" > 

    <com.mobicartel.acceldatatester.RotationView 
     android:id="@+id/rotate_view" 
     android:layout_centerInParent="true" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" /> 

</RelativeLayout> 

私は、背景を追加し、あなたが知ってもらおう。 (今は画像がまったく表示されていません。時には、正しい方向に2つを取るために一歩前に戻らなければなりません!)

関連する問題