2013-07-31 27 views
10

我遇到了以下問題:我實現了一個HorizontalScrollView,其中包含一個LinearLayout和一個ImageView。在這種情況下,圖像大約是屏幕寬度的50%。所以我想集中它。不幸的是,我發現它的中心唯一的方法是在LinearLayout上使用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

你試過encapsultaing的ImageView的一個LinearLayout中,如圖所示在您訪問的崗位設置該佈局的參數? – 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

ImageViewFrameLayout這樣的:

刪除多餘的代碼

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

更多信息here

+1

不工作...但無論如何,爲什麼我應該把imageview放在一個'FrameLayout'中,並將FrameLayout.Params放到imageView而不是父對象? – Ron

+0

第三個參數不是重力,而是重量! –

0

我想,這人會爲你工作

FrameLayout.LayoutParams layoutParams = new ScrollView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
layoutParams1.gravity(YourGravity); 
yourImage.setLayoutParams(layoutParams); 
相關問題