【问题标题】:Dynamically created ImageView is stretched when created动态创建的 ImageView 在创建时被拉伸
【发布时间】:2015-03-14 13:34:25
【问题描述】:

在我的 android 应用程序中,我根据用户之前是否购买过建筑物来动态创建 ImageViews。 (建筑物是图像)。我的问题是,当创建 ImageView 时,图像被拉伸,ImageView 显得很大。我不知道它为什么会这样做,因为我在我的应用程序的不同部分做同样的事情,并且建筑物像它们应该的那样加载正常大小。

这是动态创建的 ImageView 的代码:

ImageView mainHut = new ImageView(BattleActivity.this);
mainHut.setImageResource(R.drawable.mainhut);
mainHut.setX(mainHutX);
mainHut.setY(mainHutY);
bottomLayout.addView(mainHut);

它被添加到名为 bottomLayout 的 FrameLayout 中。

这是bottomLayou FrameLayout:

<FrameLayout 
    android:id="@+id/gameBottom"
    android:layout_weight="0.25"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

</FrameLayout>

感谢任何帮助。谢谢。

【问题讨论】:

  • 没有完整的布局 XML 这只是猜测,您是否尝试过类似 mainHut.setScaleType(ScaleType.FIT_CENTER); 的方法?
  • @JonnyHenly 是的,我已经尝试过了,但它并没有改变任何东西。我将添加 ImageView 正在添加到的布局。

标签: java android dynamic view imageview


【解决方案1】:

您没有明确指定布局参数,因此 addView() 方法正在调用 generateDefaultLayoutParams() [参见:What's the default layout of an ImageView?]

像这样在 Java 中指定布局参数:

mainHut.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    相关资源
    最近更新 更多