以编程方式将图像添加到屏幕

Add images to screen programmatically

在我的应用程序 activity 之一中,我有一个按钮,我想在每次单击按钮时显示图像。例如:

点击我的 activity 按钮,屏幕上会出现一个图像,如图所示。

第二次及以后点击该按钮将导致新图像相应地附加。

我想就如何实现这一点提出一些建议。

我用 TextView 制作了类似的东西。基本上我是这样做的:

XML:

对于我的情况,我做了 TableLayout 例如:

<TableLayout
    android:id="@+id/existedTableLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="@dimen/margin_standard">

    <TableRow>
        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/number_text"
            android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large" />
    </TableRow>
</TableLayout>


Activity

注意:根据您的情况将其更改为 ImageView

/* //Get the TableLayout. Ex:
    private TableLayout existedTableLayout = findViewById(R.id.existedTableLayout);
*/
/* Make onClickListerner to call below function */
private void addTableRowDynamically() {
        //Make new Row
        TableRow newRow= new TableRow(this);

        TextView newNoTextView = new TextView(this);
        //some TextView method, do your research about ImageView
        newNoTextView.setLayoutParams(new TableRow.LayoutParams(0,ViewGroup.LayoutParams.WRAP_CONTENT, 1));
        newNoTextView.setText("this is text");
        newNoTextView.setTextAppearance(this, android.R.style.TextAppearance_DeviceDefault_Large);

        // Add the TextView to the newRow
        newRow.addView(newNoTextView);

        // Add the newRow which contain the TextView to the TableLayout, below
        existedTableLayout.addView(newRow, existedTableLayout.getChildCount());
}

添加垂直 LineaLayout 并动态添加视图:

private void createViews() {
        for (int i = 0; i < numberOfViews; i++) {
            view = new ImageView(context);
            int width = 300;
            int height = 50;
            view.setPadding(18, 10, 0, 0);
            view.setLayoutParams(new LinearLayout.LayoutParams(width, height));
            view.setId(i);
            view.setGravity(Gravity.CENTER_VERTICAL);
            view.setBackgroundColor(Color.parseColor("someColor"));
            viewList.add(view);
        }
    }

     Rect rectf = new Rect();
        for (ImageView view : viewList) {
                    view.getGlobalVisibleRect(rectf);
                    coordinates.add(rectf.bottom);
                }