簡體   English   中英

以編程方式將ImageView添加到布局

[英]Programmatically add an ImageView to Layout

我正在嘗試使用循環在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);

            }

任何建議都歡迎。

編輯

我添加了另一段代碼,只是為了測試是否在不使用循環的情況下添加小部件:

  //test
  LinearLayout layout = new LinearLayout(this);
  Button btn = new Button(this);
  btn.setText("this is a button");
  btn.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
  layout.addView(btn);

而且我仍然得到相同的結果,只是空白。

  • 首先,為每個ImageView賦予完全相同的參數,這會導致所有ImageView位於Like STACK只有最后一個對您可見。 您可以使用ScrollView來查看ImageView是否實際添加到了根布局中

  • 其次,將布局參數設置為動態ImageView而不是根布局。

更新資料

如何使用ScrollView

首先,您的XML應該包含ScollView和一個子對象(在我們的情況下為LinearLayout ,但您可以根據使用情況選擇任何布局)以放置ImageView

    <ScrollView>
      <LinearLayout
       android:id = "imageViewPlaceHolder">

      </LinearLayout>
    </ScrollView>

其次,在Java代碼中,您應該找到一個內部布局以添加視圖,如下所示

LinearLayout placeHolder = findViewById(R.id.imageViewPlaceHolder);

然后,您准備將ImageViews添加到placeHolder因為您的placeHolderScrollView包裝,如果內容高度超過專用高度,它將動態創建滾動。

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);

方法creatHeader:

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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM