以编程方式设置 LayoutParams 不起作用

Setting LayoutParams programmatically not working

我希望 Imageview 的宽度和高度与整个屏幕匹配。在使用 Layout Inflater 膨胀视图后,我在 view.But 上设置 Layout 参数,图像的高度没有覆盖整个屏幕。这是代码:

    LayoutInflater mLayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View itemView = mLayoutInflater.inflate(R.layout.viewpager, container, false);
    itemView.setLayoutParams(new ViewGroup.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.MATCH_PARENT));

    ImageView imageView = (ImageView) itemView.findViewById(R.id.viewpager_image);
  /*imageView.setLayoutParams(new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.MATCH_PARENT,
            LinearLayout.LayoutParams.MATCH_PARENT));*/
    imageView.setImageResource(mResources[position]);
    container.addView(itemView);
    return itemView;

这样做我的宽度与屏幕尺寸匹配,但高度与屏幕不匹配。我正在膨胀的布局具有线性布局(宽度、高度 - MATCH_PARENT)及其子图像视图(宽度、高度 - MATCH_PARENT)。我不知道我在这里做错了什么。

    DisplayMetrics displaymetrics = new DisplayMetrics();
    //if in activity then use
    getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
    //if in adapter then use
    context.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
    //if in fragment then use
    getActivity().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
    int width = displaymetrics.widthPixels;
    int height = displaymetrics.heightPixels;
    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(width, height);
    imageView.setLayoutParams(layoutParams);

在您的代码中添加这些行

imageView.setScaleType(ScaleType.FIT_XY);

imageView.setScaleType(ScaleType.CENTER);

试试这个可能有用