0

RelativeLayoutXMLファイルに基本を作成しました。私のコードでは、いくつかImageViewのを動的に作成し、それらを内のさまざまな場所に配置したいと思いますRelativeLayout。私が試したすべて( ImageView.setX()、、)は、より高いAPIレベル(11+)が必要であると言っているか、がImageView.setTranslationX()表示されないようにしています。ImageView.setPadding()ImageView

の場所で何もしようとしない場合ImageView、画像はその位置で画面に表示されます(0,0)

4

2 に答える 2

0

このシンプルなアプリは、RelativeLayoutを使用して15個のアイコンを3行に動的にレイアウトします。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

RelativeLayoutsは、アイテムを他のアイテムとの関係で配置するために使用されます。setXのような特定の位置にレイアウトを配置するためにそれらを使用することはありません。既存のアイテムに対して新しいアイテムを配置する場合は、RelativeLayout.LayoutParamsを確認してください。layout_alignXXXおよびlayout_toXXXOfタイプのパラメーターを設定できます。

正確なピクセル位置が必要な場合は、非推奨のAbsoluteLayoutを使用してください。アスペクト比や画面サイズが異なるデバイスでは、大量の作業を行わなくても、見た目が醜いことに注意してください。

于 2013-03-04T21:55:14.477 に答える