如何将 imageView 动态添加到具有线性布局的滚动视图?

How to add imageView dynamically to scroll view which has linear layout?

如何使用 java 代码将 imageView 动态添加到带滚动视图的 LinearLayout?我想要我的图像并排但是当检测到它在 phone 的边缘时,添加新行但我似乎没有找到任何答案.. 他们所说的只是垂直或水平动态添加但没有换行..

有人愿意帮助我吗? :( 我是新手。

我的 XML 代码如下:

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <LinearLayout
        android:id="@+id/layoutWordsVert"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#ffffff"
        android:orientation="vertical">
        <LinearLayout
            android:id="@+id/layoutWordsHori"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:background="#ffffff"
            android:orientation="horizontal">

            <ImageView
                android:id="@+id/saya"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:background="@drawable/border_darkgreen1"
                android:src="@drawable/me"
                android:padding="1dp"/>

        </LinearLayout>
    </LinearLayout>

</ScrollView>

预期视图:

|---------|---------|---------|
| image 1 | image 2 | image 3 |
|---------|---------|---------|
| image 4 | image 5 | image 6 |
|---------|---------|---------|

这是您的 MainActivity.java 的样子,

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements OnItemClickListener {

    ArrayAdapter<String> nosAdapter;
    GridView gridView;

    int images[] = { R.drawable.one, R.drawable.two, R.drawable.three,
            R.drawable.four, R.drawable.five, R.drawable.six, R.drawable.seven,
            R.drawable.eight, R.drawable.nine, R.drawable.ten, R.drawable.zero,
            R.drawable.blank };

    MyGridViewAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        gridView = (GridView) findViewById(R.id.GridView);
        adapter = new MyGridViewAdapter(this, images);
        gridView.setAdapter(adapter);

        gridView.setOnItemClickListener(this);

    }

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long arg3) {
        Toast.makeText(this, "Item at pos "+pos+" clicked", Toast.LENGTH_SHORT).show();
    }

}

这将是您的 GridView 适配器,

import android.app.ActionBar.LayoutParams;
import android.content.Context;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;

public class MyGridAdapter extends BaseAdapter {

    int[] images;
    Context context;

    public MyGridAdapter(Context context, int[] images) {
        this.context = context;
        this.images = images;
    }

    @Override
    public int getCount() {
        return images.length;
    }

    @Override
    public Object getItem(int arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public long getItemId(int arg0) {
        // TODO Auto-generated method stub
        return 0;
    }

@Override
public View getView(int pos, View convertView, ViewGroup parent) {

    ImageView imageView;
    LinearLayout outerLayout;

    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    if (convertView == null) {
        convertView = (LinearLayout) inflater.inflate(R.layout.grid_my_images,null);
    }

    imageView = (ImageView) convertView.findViewById(R.id.ivImage);

    imageView.setImageResource(images[pos]);
    return convertView;
}
}

最后 activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="15dp" >

    <GridView
        android:id="@+id/GridView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:horizontalSpacing="3dp"
        android:numColumns="3"
        android:verticalSpacing="3dp" >
    </GridView>
</LinearLayout>

布局文件网格,grid_my_images.xml

    <LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
    android:id="@+id/ivGridMyApp"
    android:layout_width="match_parent"
    android:layout_height="100dp" /></LinearLayout>