【问题标题】:How to set ImageView in the center of layout from code?如何从代码中将 ImageView 设置在布局的中心?
【发布时间】:2013-06-27 09:14:44
【问题描述】:

我下一个试试

LinearLayout.LayoutParams b = new LinearLayout.LayoutParams(
                        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
                b.gravity =Gravity.CENTER;

                ivOne.setLayoutParams(b);

但这不起作用,布局左侧的图像视图

【问题讨论】:

  • 尝试用RelativeLayout代替LinearLayoutRelativeLayoutcenterInParent属性。
  • 我必须使用什么方法?没有“重力”
  • LayoutParams b = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT | RelativeLayout.CENTER_IN_PARENT); b.gravity =重力.CENTER; ivOne.setLayoutParams(b);这不起作用
  • @KostyaKhuta : 父布局应该是 RelativeLayout 而不是 LinearLayout

标签: android android-layout layout-gravity


【解决方案1】:

尝试将父布局更改为RelativeLayout,并使用属性centerInParent

RelativeLayout rootLayout = new RelativeLayout(this);
rootLayout.setLayoutParams( new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.CENTER_IN_PARENT);
ImageView ivOne = new ImageView(this);
ivOne.setImageResource(R.drawable.ic_launcher);
ivOne.setScaleType(ImageView.ScaleType.CENTER);
ivOne.setLayoutParams(params);
//TODO : add other views 
rootLayout.addView(ivOne);

【讨论】:

    【解决方案2】:

    您不能直接将参数设置为您的ImageView,您应该改用ImageIcons

    试试这个:

    ImageIcons[i] = new ImageView(this);
    ImageIcons[i].setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
    LayoutParams.WRAP_CONTENT));
    layoutParams.gravity=Gravity.CENTER;
    ImageIcons[i].setLayoutParams(layoutParams);
    

    希望它有效.. 对我来说很好用。!

    【讨论】:

      【解决方案3】:

      您可以像 zozelfelfo 所说的那样使用 RelativeLayout 及其 centerInParent 属性,或者您可以坚持使用 LinearLayout 并试试这个:

      LinearLayout.LayoutParams b = new LinearLayout.LayoutParams(
                              LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
      
                      ivOne.setScaleType(ImageView.ScaleType.CENTER);
      
                      ivOne.setLayoutParams(b);
      

      但是在这种方法中,您的 ImageView 将占据整个布局,因此如果您也有其他视图,请小心。如果你这样做,那么你最好的选择是use RelativeLayout

      【讨论】:

      • 06-27 12:35:17.076: E/AndroidRuntime(3357): 引起: java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams
      猜你喜欢
      • 2011-07-31
      • 1970-01-01
      • 1970-01-01
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多