将图像限制为包含视图的大小 (xamarin.android)

The4droogs

我正在尝试使用 Xamarin.Android 中的 GridLayout 创建棋盘。GridLayout 中的每个 View 都将是一个描绘一块的图像视图(如果正方形包含一块)。在添加图像资源之前,板子显示正常。但是一旦添加了图像,它就会将 ImageView 的大小推到比预期大得多的程度。

这是我正在使用的代码。为板上的每个方块运行以下方法并创建 ImageView 并将其返回以添加到 GridLayout:

public View BuildSquare(Square squareModel)
    {
        SquareView rtn = new SquareView(this.Activity, squareModel); //SquareView extends ImageView
        rtn.UpdateBackgroundColor(); //set square color
        if (squareModel.Piece != null)
        {
            rtn.DrawPiece();
        }

        GridLayout.LayoutParams param = new GridLayout.LayoutParams();

        //set weight of each row and column to ensure equal size
        param.RowSpec = GridLayout.InvokeSpec(GridLayout.Undefined, 1f);
        param.ColumnSpec = GridLayout.InvokeSpec(GridLayout.Undefined, 1f);
        rtn.LayoutParameters = param;
        return rtn;
    }

DrawPiece()方法如下,设置图片资源:

 public void DrawPiece()
    {
        if (squareModel.Piece == null) return;

        string key = squareModel.Piece.GetPieceNotation();
        int resource = -1;

        //get the image resource corresponding to the piece on the ssquare
        if (AndroidConstants.PieceResources.TryGetValue(key, out resource))
        {
            this.SetImageResource(resource);
        }
        this.SetScaleType(ScaleType.FitXy);    

    }

当我注释掉 rtn.DrawPiece() 行时,板子正确显示如下:

在此处输入图片说明

但是,当包含该行并设置图像资源时,显示如下:

在此处输入图片说明

您在此处看到的是棋盘上左上角的正方形,膨胀得非常大以容纳图像。我希望图像被缩放以适应上面第一张图像中的正方形。我尝试过不同的 ScaleTypes,但似乎没有什么区别。这与使用 GridLayout 有关系吗?或者这里还有什么我失踪的事情吗?

刘比利 - MSFT

我认为您需要将高度和宽度设置为SquareView.

例如:

        public View BuildSquare(Square squareModel)
        {
            SquareView rtn = new SquareView(this, squareModel); //SquareView extends ImageView
            rtn.UpdateBackgroundColor(); //set square color
            if (squareModel.Piece ==0)
            {
               rtn.DrawPiece();
            }

            //Set the height and width
            GridLayout.LayoutParams param = new GridLayout.LayoutParams(new ViewGroup.LayoutParams(50, 50));

            //set weight of each row and column to ensure equal size
            param.RowSpec = GridLayout.InvokeSpec(GridLayout.Undefined, 1f);
            param.ColumnSpec = GridLayout.InvokeSpec(GridLayout.Undefined, 1f);
            rtn.LayoutParameters = param;
            return rtn;
        }

结果:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

设置Android视图的样式-Xamarin

来自分类Dev

Xamarin分步向导android视图

来自分类Dev

将Xamarin Android项目导入Android Studio

来自分类Dev

Xamarin android drawable资源文件夹的图像大小?

来自分类Dev

Xamarin Android OutOfMemoryError视图分页器中的大图像

来自分类Dev

将项目从Xamarin.Android传输到Xamarin.Forms

来自分类Dev

复选框大小 Xamarin Android

来自分类Dev

MasterDetailPage Xamarin Android中的本机视图

来自分类Dev

Xamarin.Android中的材料日历视图

来自分类Dev

Xamarin Android-隐藏文本视图

来自分类Dev

回收站视图(Xamarin Android)

来自分类Dev

在Xamarin Android中更改视图背景

来自分类Dev

Xamarin、Android Activity、IntentFilter、打开表单视图

来自分类Dev

Xamarin Android-OutOfMemoryError异常-大图像

来自分类Dev

如何设置背景图像Xamarin Android

来自分类Dev

Xamarin Android:在RecyclerView上从Localpath加载图像

来自分类Dev

Xamarin Forms图像未显示-Android

来自分类Dev

如何在Xamarin Android中翻转图像?

来自分类Dev

图像适配器Xamarin Android

来自分类Dev

Xamarin ios裁剪图像(如Android)

来自分类Dev

Xamarin Android 从图库获取图像数据

来自分类Dev

将Xamarin部署到Android时出错

来自分类Dev

Xamarin Android将MainActivity传递给AlertDialog

来自分类Dev

将密钥库从 Xamarin 导入 Android Studio

来自分类Dev

Xamarin.Forms Shared在Android视图中不显示图像,但在iOS视图中显示图像

来自分类Dev

Xamarin.Forms Shared在Android视图中不显示图像,但在iOS视图中显示图像

来自分类Dev

Android-将堆大小限制为16MB以进行测试?

来自分类Dev

Xamarin大小限制?

来自分类Dev

Xamarin大小限制?

Related 相关文章

热门标签

归档