2013-07-31 10 views
10

私はHorizontalScrollViewを実装しました。この場合、LinearLayoutImageViewが含まれています。この場合、画像は画面幅の約50%です。だから私はそれを中心にしたい。残念ながら、それを中心に見つけた唯一の方法は、にlayout_gravity="center"を使用することです。Android - LinearLayoutのプログラムでLayout_Gravityを設定する

は、ここに私のxmlです:

<HorizontalScrollView 
      android:layout_gravity="center" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"> 

     <LinearLayout 
       android:orientation="horizontal" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content"> 

     <ImageView      
       android:src="@drawable/myImg" 
       android:layout_width="wrap_content" 
       android:adjustViewBounds="true" 
       android:layout_height="150dp"/> 

     </LinearLayout> 

    </HorizontalScrollView> 

しかし、私はプログラム的layout_gravityを設定する必要があります。どのように私はこれを達成することができるか、または別の方法を知っているアイデアを誰かが持っていますか?私がGoogleを介して見つけたものはすべてthis postのように私のために働いていません。

ありがとうございます!

+0

あなたがのLinearLayoutでImageViewのをencapsultaing、あなたが訪問したポストに示すように、レイアウトのためのパラメータを設定しようとしたがありますか? – ClaireG

+0

ええ、私はそれを試してみました...働いていない – Ron

答えて

29

このような代でください:

LayoutParams lp = new LayoutParams(); 
    lp.gravity= Gravity.CENTER_HORIZONTAL; 
    myImg.setLayoutParams(lp); 

がUPDATE: これを実行する別の方法:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
       LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
      params.weight = 1.0f; 
      params.gravity = Gravity.CENTER; 

      imageView.setLayoutParams(params); 
+4

は動作しません。申し訳ありません... – Ron

+0

重力値が機能するには、要素のMATCH_WIDTHがその親の全幅を設定または占有している必要があります。これが当てはまらない場合、それは100%の重み値を持たなければなりません(これは、親を完全に占有させます)。 – somedev

6

は、このようなFrameLayoutImageViewを入れて:

は、余分な削除しますコード

ImageView image = new ImageView(mContext); 
image.setLayoutParams(new FrameLayout.LayoutParams(width, height, gravity)); 

詳細情報here

+1

が動作していません...とにかく、なぜImageViewを 'FrameLayout'の中に置き、FrameLayout.Paramsを親ではなくimageViewに配置するのですか? – Ron

+0

3番目のパラメータは 'gravity'ではなく' weight'です! –

0

私が思うに、この1つはあなたのために動作します

FrameLayout.LayoutParams layoutParams = new ScrollView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
layoutParams1.gravity(YourGravity); 
yourImage.setLayoutParams(layoutParams); 
関連する問題