Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以编程方式将ImageView添加到布局_Java_Android_Imageview_Dynamic Ui - Fatal编程技术网

Java 以编程方式将ImageView添加到布局

Java 以编程方式将ImageView添加到布局,java,android,imageview,dynamic-ui,Java,Android,Imageview,Dynamic Ui,我试图使用循环在我的UI上添加一组ImageView,问题是我不知道是否添加了ImageView,因为当我运行应用程序时,它只会给我一个空白的白色屏幕 for(int i = 0; i < jsonArray.length(); i++) { Log.d("test", "ok"); //the loop works btw poster.setId(i); JSONObject jsonObj

我试图使用循环在我的UI上添加一组ImageView,问题是我不知道是否添加了ImageView,因为当我运行应用程序时,它只会给我一个空白的白色屏幕

for(int i = 0; i < jsonArray.length(); i++) {
                Log.d("test", "ok"); //the loop works btw
                poster.setId(i);
                JSONObject jsonObject = jsonArray.getJSONObject(i);

                ImageView poster = new ImageView(getApplicationContext());
                poster.setBackgroundResource(R.drawable.myPoster);


                RelativeLayout.LayoutParams posterParams = new RelativeLayout.LayoutParams(
                        RelativeLayout.LayoutParams.WRAP_CONTENT,
                        RelativeLayout.LayoutParams.WRAP_CONTENT
                );
                posterParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
                posterParams.addRule(RelativeLayout.CENTER_VERTICAL);
                posterParams.width = 160; //is this DP?
                posterParams.height = 220;
                relativeLayout.addView(poster, posterParams);

            }
我仍然得到同样的结果,只是空白

首先,为每个ImageView提供完全相同的参数,这会导致所有ImageView都放置在类似的堆栈上,只有最后一个对您可见。您可以使用ScrollView查看ImageView是否实际添加到根布局中

其次,将布局参数设置为动态图像视图,而不是根布局

更新

如何使用ScrollView

首先,在我们的例子中,XML应该包含ScollView和子LinearLayout,但是您可以根据您的用例选择任何布局来放置ImageView

然后,您可以将ImageView添加到占位符中,因为占位符用ScrollView包装,如果内容高度超出专用高度,它将动态创建一个滚动

placeHolder.addView(yourImageView);
从Java添加所有内容

HorizontalScrollView hsv = new HorizontalScrollView(context);
hsv.setLayoutParams(yourLayoutParams);

LinearLayout myPlaceHolder = new LinearLayout(context);
myPlaceHolder.setLayoutParams(yourLayoutParamsForLinearLayout);

myPlaceHolder.addView(yourDesiredImageView);

hsv.addView(myPlaceHolder);

yourRootLayout.addView(hsv);
希望它有意义,请随时询问任何澄清

试试以下方法:

listView = (ListView) findViewById(R.id.lv_info);
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, text);

listView.addHeaderView(creatHeader(getString(R.string.abuot_email),getResources().getString(R.string.email_info)));
listView.addHeaderView(creatHeader(getString(R.string.about_phone),getResources().getString(R.string.admin_phone_num)));
listView.addHeaderView(creatHeader(getString(R.string.about_copyright), getResources().getString(R.string.copyright_info)));
listView.addHeaderView(creatHeader(getString(R.string.about_version),getResources().getString(R.string.version_info)));

listView.setAdapter(adapter);
方法创建头:

public View creatHeader(String title, String text) {
    View v = getLayoutInflater().inflate(R.layout.lv_item_header_info, null);
    ((TextView) v.findViewById(R.id.tvTitle)).setText(title);
    ((TextView) v.findViewById(R.id.tvText)).setText(text);
    return v;
}
项目的布局文件:

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

    <TextView
        android:id="@+id/tvTitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="ssss"
        android:textAppearance="?android:attr/textAppearanceListItemSmall"
        android:gravity="center_vertical"/>


    <TextView
        android:id="@+id/tvText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="sssssssss"
        android:gravity="center_vertical"/>

</LinearLayout>

看到我的答案了,希望能有所帮助。你说使用ScrollView是什么意思,你能给我一个示例代码吗?谢谢,我所做的是使用xml创建LinearLayout,然后在java//findViewbyID中创建它的一个实例,然后添加视图。我仍然在想,如果不使用xml而使用java创建LinearLayout,我如何才能做到这一点。如何获得根布局?最有可能的是你的根布局我能为你做的就是,现在,我建议开始解决这个问题
listView = (ListView) findViewById(R.id.lv_info);
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, text);

listView.addHeaderView(creatHeader(getString(R.string.abuot_email),getResources().getString(R.string.email_info)));
listView.addHeaderView(creatHeader(getString(R.string.about_phone),getResources().getString(R.string.admin_phone_num)));
listView.addHeaderView(creatHeader(getString(R.string.about_copyright), getResources().getString(R.string.copyright_info)));
listView.addHeaderView(creatHeader(getString(R.string.about_version),getResources().getString(R.string.version_info)));

listView.setAdapter(adapter);
public View creatHeader(String title, String text) {
    View v = getLayoutInflater().inflate(R.layout.lv_item_header_info, null);
    ((TextView) v.findViewById(R.id.tvTitle)).setText(title);
    ((TextView) v.findViewById(R.id.tvText)).setText(text);
    return v;
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="@dimen/activity_vertical_margin">

    <TextView
        android:id="@+id/tvTitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="ssss"
        android:textAppearance="?android:attr/textAppearanceListItemSmall"
        android:gravity="center_vertical"/>


    <TextView
        android:id="@+id/tvText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="sssssssss"
        android:gravity="center_vertical"/>

</LinearLayout>