gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:46:39 25 4
gpt4 key购买 nike

我正在尝试使用循环在我的 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 都像 STACK 一样放置只有最后一个对您可见。您可以使用 ScrollView 来查看 ImageView 是否实际添加到您的根布局

  • 其次,将布局参数设置为动态 ImageView,而不是根布局。

更新

如何使用ScrollView

首先,您的 XML 应包含 ScollView 和一个子级(在我们的示例中为 LinearLayout,但您可以根据您的用例选择任何布局)用于放置您的 ImageView

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

</LinearLayout>
</ScrollView>

其次,在您的 Java 代码中,您应该找到一个内部布局来添加 View ,如下所示

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

希望这是有道理的,如有任何疑问,请随时询问

关于java - 以编程方式将 ImageView 添加到布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56601457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com