2010-06-16 86 views
12

朋友,如何通过java代码在android中将布局中心设置为垂直?

我想通过图像的java代码来设置布局 的android:layout_centerVertical =“true”属性。

任何人都可以指导我如何做到这一点。这是我的代码。

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

params.height = (int)totalHeight; 

img.setLayoutParams(params); 

我已经尝试过使用setScaleType(ScaleType.FIT_CENTER)但没有用。

任何帮助将appriciated。

回答

21

纠正我,如果我错了,但它听起来像你正试图设置布局内的图像对齐(或位置方向)?为此,您需要设置包含您对齐的视图的布局的重力属性。

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon); 

    RelativeLayout layout = (RelativeLayout) findViewById(R.id.layout); 
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.FILL_PARENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT); 

    ImageView imageView = new ImageView(this); 
    imageView.setLayoutParams(params); 
    imageView.setImageBitmap(bitmap); 

    layout.setGravity(Gravity.CENTER_VERTICAL | Gravity.TOP); 
    layout.addView(imageView); 

在这个例子中我编程添加图像在我的布局资源的RelativeLayout,加入ImageView的,并对准,以便它将被放置在顶部,垂直中心位置。

2

在新的SDK中没有Gravity.VERTICAL_CENTER,但也许你可以用 layout.setGravity(Gravity.CENTER)来设置它。

41

试试这个代码..

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

params.addRule(RelativeLayout.CENTER_VERTICAL); 

img.setLayoutParams(params); 
+1

我喜欢这个比接受的答案,因为它不会影响到父视图的任何其他子视图。 – arlomedia 2014-09-25 18:31:59

+1

这比在RelativeLayout中接受的答案要好! – cwhsu 2014-12-08 00:50:21