2013-07-31 54 views
10

Tôi gặp vấn đề sau: Tôi đã triển khai HorizontalScrollView trong đó có một trường hợp là LinearLayoutImageView. Trong trường hợp này, hình ảnh chiếm khoảng 50% chiều rộng màn hình. Vì vậy, tôi muốn tập trung vào nó. Thật không may là cách duy nhất tôi tìm thấy để trung tâm nó là, sử dụng layout_gravity="center" trên LinearLayout.Android - Đặt Layout_Gravity theo lập trình cho LinearLayout

Dưới đây là xml của tôi:

<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> 

Nhưng tôi cần phải đặt layout_gravity lập trình. Có ai có một ý tưởng làm thế nào tôi có thể đạt được điều này hoặc biết một cách khác nhau? Tất cả những thứ tôi tìm thấy qua Google không hoạt động với tôi như this post.

Cảm ơn!

+0

Bạn đã thử encapsultaing các ImageView trong một LinearLayout và thiết lập các thông số cho bố trí đó như thể hiện trong bài viết bạn truy cập? – ClaireG

+0

vâng, tôi đã thử nó ... không hoạt động – Ron

Trả lời

29

somethings Đỗ như thế này:

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

UPDATE: Một cách khác để làm điều này:

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

      imageView.setLayoutParams(params); 
+4

không hoạt động. xin lỗi ... – Ron

+0

Vì vậy, để giá trị trọng lực hoạt động, phần tử phải có MATCH_WIDTH được đặt hoặc chiếm toàn bộ chiều rộng của cha mẹ. Nếu đây không phải là trường hợp, sau đó nó phải có một giá trị trọng lượng 100% (mà làm cho nó chiếm toàn bộ cha mẹ), chỉ sau đó không thiết lập công việc trọng lực. – somedev

6

Đặt ImageView trong một FrameLayout như thế này:

Removed thêm mã

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

Thông tin thêm here.

+1

không hoạt động ... nhưng dù sao, tại sao tôi lại đặt hình ảnh bên trong 'FrameLayout' và đặt FrameLayout.Params vào imageView chứ không phải cha mẹ? – Ron

+0

thông số thứ ba không phải là 'trọng lực', đó là 'trọng số'! –

0

Tôi nghĩ rằng, điều này sẽ làm việc cho bạn

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