0

RelativeLayout在我的 XML 文件中创建了一个基本的。在我的代码中,我想动态创建几个ImageViews 并将它们放置在RelativeLayout. 我尝试过的所有内容 ( ImageView.setX(), ImageView.setTranslationX(), ImageView.setPadding()) 要么说我需要更高的 API 级别 (11+) 要么导致ImageView不出现。

如果我不尝试对 的位置做任何事情ImageView,那么图像确实会出现在屏幕上的(0,0)位置。

4

2 回答 2

0

这个简单的应用程序将使用RelativeLayout 将15 个图标动态布局成三行。没有理由使用 AbsoluteLayout - 它也已被弃用。

主要活动。

public class MainActivity extends Activity {

    private int mWidth;
    private int mTile;
    private int mColMax = 5;
    private Context mContext;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mContext = this;

        // the screen width is need to work out the tile size
        mWidth = mContext.getResources().getDisplayMetrics().widthPixels;
        // how wide (and high) each icon will be to fit the screen.
        mTile = (mWidth / mColMax);

        setContentView(R.layout.activity_main);
        // layout the icons
        initUI();
    }

    /**
     * Layout 15 icon images in three rows dynamically.
     */
    private void initUI() {
        // this is the layout from the XML
        ViewGroup layout = (ViewGroup) findViewById(R.id.main_layout); 

        ImageView iv;
        RelativeLayout.LayoutParams params;

        int i = 0;
        int row = 0;
        int col = 0;
        do {
            params = new RelativeLayout.LayoutParams(mTile,mTile);
            params.setMargins((col * mTile), (row * mTile), 0, 0);
            iv = new ImageView(mContext);
            iv.setAdjustViewBounds(true);
            iv.setScaleType(ScaleType.FIT_CENTER);
            iv.setImageResource(R.drawable.ic_launcher);
            iv.setLayoutParams(params);
            layout.addView(iv);
            if (col == mColMax) {
                row++;
                col = 0;
            } else {
                col++;
            }
        } while (++i <= 16);
    }
}

和布局 XML。

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</RelativeLayout>
于 2013-03-04T23:23:24.493 回答
-1

相对布局用于将项目与其他项目相关联。您不会使用它们将布局放置在特定位置,例如 setX。如果要相对于现有项目放置新项目,请查看RelativeLayout.LayoutParams-您可以通过它们设置layout_alignXXX和layout_toXXXOf类型参数。

如果您需要精确的像素位置,请使用已弃用的 AbsoluteLayout。请注意,在没有大量工作的情况下,在任何具有不同纵横比或屏幕尺寸的设备上,它看起来都很难看。

于 2013-03-04T21:55:14.477 回答