【问题标题】:Dynamically create a matrix of ImageViews in RelativeLayout在 RelativeLayout 中动态创建一个 ImageViews 矩阵
【发布时间】:2014-11-04 01:24:40
【问题描述】:

我在RelativeLayout 中创建图像矩阵时遇到问题。我设法只创建了一行,其他行根本没有显示。

int index=1;
    for(int i=0;i<Globals.NUM_ROWS;i++){
        for(int j=0;j<Globals.NUM_COLS;j++)
        {
            ImageView iv = new ImageView(this);
            iv.setImageResource(R.drawable.obs_block);
            iv.setId(index);
            RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT);

            if(i!=0 && i%Globals.NUM_COLS==0){
                lp.addRule(RelativeLayout.BELOW,index-Globals.NUM_COLS);
            }else{
                lp.addRule(RelativeLayout.RIGHT_OF, index-1);
            }

            gameLayout.addView(iv, lp);
            index++;
        }
    }

【问题讨论】:

    标签: android android-relativelayout android-imageview


    【解决方案1】:

    您没有正确构建Relative.LayoutParams。看看这是否有帮助:

            int index = 1;
            for (int i = 0; i < Globals.NUM_ROWS; i++) {
                for (int j = 0; j < Globals.NUM_COLS; j++) {
                    ImageView img = new ImageView(this);
                    img.setId(index);
                    img.setImageResource(R.drawable.ic_launcher);
                    RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(
                            RelativeLayout.LayoutParams.WRAP_CONTENT,
                            RelativeLayout.LayoutParams.WRAP_CONTENT);
                    if (j == 0) {
                        rlp.addRule(RelativeLayout.ALIGN_PARENT_LEFT,
                                RelativeLayout.TRUE);
                    } else {
                        rlp.addRule(RelativeLayout.RIGHT_OF, index - 1);
                    }
                    if (i == 0) {
                        rlp.addRule(RelativeLayout.ALIGN_PARENT_TOP,
                                RelativeLayout.TRUE);
                    } else {
                        rlp.addRule(RelativeLayout.BELOW, index - Globals.NUM_COLS);
                    }
                    img.setLayoutParams(rlp);
                    rl.addView(img);
                    index++;
                }
            } 
    

    【讨论】:

    • 图像矩阵向屏幕左侧对齐可以居中吗?我需要它非常紧急 Thamks 提前@Luksprog
    • @user990967 您可以尝试在RelativeLayout 上使用setGravity(Gravity.CENTER)(或xml 布局中的android:gravity="center" 属性)。
    • @Luksprog 他们俩都正常工作..你能不能找到我试过的解决方案跨度>
    • @user990967 RelativeLayout 确实有一个方法 setGravity() 并且它应该可以工作(也许可以尝试不使用第一行的 ALIGN_PARENT_LEFTALIGN_PARENT_TOP 规则)。您还可以使包含矩阵的 RelativeLayout 具有 wrap_content 的宽度/高度,然后将其置于另一个布局中,例如 FrameLayoutRelativeLayout
    • 我使用了 re.setGravity(Gravity.Center) 但它不起作用(我已经从以前的代码中删除了 ALIGN_PARENT_LEFT 和 ALIGN_PARENT_TOP)。我想动态添加图像矩阵我会知道运行时的行数和列数
    猜你喜欢
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多