我正在尝试通过代码在其中创建一个LinearLayout和一个ImageView。我想特别使用addContentView,因为android代码用于Unity3D插件,并且使用setContentView重叠游戏但setContentView确实有效。但是,使用addContentView将图像放在中心位置,但它位于屏幕的最顶部。我想在屏幕中心。
LinearLayout layout = new LinearLayout(getApplicationContext());
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
layout.setGravity(Gravity.CENTER);
//layoutParams.gravity = Gravity.CENTER;
layout.setOrientation(LinearLayout.VERTICAL);
//layout.setLayoutParams(layoutParams);
LinearLayout.LayoutParams imageViewParams = new LinearLayout.LayoutParams((100),( 100));
imageViewParams.gravity = Gravity.CENTER;
ImageView iv = new ImageView(getApplicationContext());
iv.setLayoutParams(imageViewParams);
iv.setScaleType(ImageView.ScaleType.FIT_XY);
iv.setImageResource(drawable_spinner);
layout.addView(iv);
addContentView(layout, layoutParams);
正如您所看到的,我已经尝试将重力设置为layoutParams并将其设置为布局,但没有任何变化。
有人可以告诉我我错过了什么。非常感谢!
答案 0 :(得分:0)
检查活动中已存在的布局的严重性。听起来像是设置在左上角而不是中心。此外,如果图像视图是动态布局中唯一的内容,您可能需要考虑不使用布局并仅添加图像视图。
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point(); display.getSize(size);
Integer screenWidth=size.x;
Integer screenHeight=size.y;
这是我测量屏幕的方式。您的imageView应该是每台设备100x100。所以你应该能够这样设置......
imageView.setLeft((screenWidth/2)-50);
imageView.setTop((screenHeight/2)-50);
答案 1 :(得分:0)
请将您的代码更改为:
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
LinearLayout layout = new LinearLayout(getApplicationContext());
layout.setOrientation(LinearLayout.VERTICAL);
layout.setGravity(Gravity.CENTER);
LinearLayout.LayoutParams imageViewParams = new LinearLayout.LayoutParams((100), (100));
ImageView iv = new ImageView(getApplicationContext());
iv.setScaleType(ImageView.ScaleType.FIT_XY);
iv.setImageResource(drawable_spinner);
layout.addView(iv, imageViewParams);
addContentView(layout, layoutParams);
答案 2 :(得分:0)
您可以尝试:
<{1}}随处可见,MATCH_PARENT
用于imageview。
但只要我们对周围的观点一无所知,我们就无法给你一个明确的解决方案。
答案 3 :(得分:0)
这对我有用
RelativeLayout rootLayout = new RelativeLayout(this);
rootLayout.setLayoutParams( new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT));
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(size, size);
params.addRule(RelativeLayout.CENTER_IN_PARENT);
ivOne = new ImageView(this);
ivOne.setImageResource(drawable_spinner);
ivOne.setScaleType(ImageView.ScaleType.FIT_XY);
ivOne.setLayoutParams(params);
rootLayout.addView(ivOne);
addContentView(rootLayout,new ViewGroup.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,RelativeLayout.LayoutParams.MATCH_PARENT));
如果使用ScaleType.FIT_XY之外的其他内容,它实际上会裁剪图像。