【问题标题】:Android Java - is there an easy way to inflate Views in several rows?Android Java - 有没有一种简单的方法可以在几行中膨胀视图?
【发布时间】:2013-12-04 08:06:39
【问题描述】:

我对编程很陌生,所以请不要对我投反对票。 我需要像文本进入 TextView 一样膨胀视图 - 当一行结束时,文本从另一行的开头开始,所以我的膨胀视图应该从屏幕的开头(ViewGroup)开始并进入前一行视图。像往常一样文本。

我看到它的方式 - 我有一种根垂直 LinearLayout,然后我在其中放置水平 LinearLayout,计算屏幕宽度,计算我的视图宽度,膨胀到我的第一个 LinearLayout 可以容纳的数量,并在我的位置创建另一个水平 LinearLayout放置另一行视图并重复此操作,直到我的所有视图都被夸大。

但是可能有一些更简单的方法吗?因为这么简单的事情要做的事情太多了

【问题讨论】:

  • 您确实意识到您可以在 TextView 中拥有多行?
  • 我做了一个 TextView 的例子 - 我想在屏幕上膨胀我的视图,就像 TextView 操作字符一样。如果您只是将 17 个 ImageViews 膨胀到水平 LinearLayout - 您可能会看到其中的 6-7 个,我希望我的视图以 TextView 放置字符的方式膨胀 - 在几行中

标签: java android android-layout inflate


【解决方案1】:

我会怎么做,在每个“行”中都有静态数量的图像,这些图像确实是嵌套在垂直线性布局内的水平线性布局(可能嵌套在 ScrollView 内?)。

假设您选择每行 4 张图像,您担心在不同的屏幕尺寸上它们会有太多或太少的填充,结果看起来不好看?由于您是编程新手,我将向您介绍 Android 中您可能不熟悉的一件事。

您的项目 -> Res 文件夹有一个布局文件夹,其中包含 activity_main.xml

在名为的 res 文件夹中创建新文件夹:
布局-sw320dp
布局-sw320dp-mdpi
布局-sw320dp-hdpi
布局-sw320dp-xhdpi
布局-sw480dp
布局-sw600dp
布局-sw600dp-mdpi
布局-sw720dp
布局-sw800dp

以上文件夹只是您可以创建的文件夹的示例。 例如,layout-sw600dp-mdpi 包含屏幕“最小宽度为 600dp 且具有中等 dpi”的手机的布局文件。最小宽度是指垂直或水平宽度,哪个更小。

假设您使用的手机本身会使用“layout-sw720dp”文件夹进行布局,但您的项目中没有该文件夹。那么在这种情况下手机将使用的布局文件夹是 layout-sw600dp-mdpi。应用程序将始终使用应用程序支持的“最佳/最接近”布局。

所以第一步是选择您要提供的布局文件夹。第二步是将布局文件从默认布局文件夹复制/粘贴到所有其他布局文件夹。在此之后,您可以开始为您的组件设置不同的尺寸和填充/边距,无论是图像还是布局等等。

始终记得将值设置为“dp”而不是“px”,字体大小设置为“sp”。

希望能帮到你。

【讨论】:

  • 好吧..我找到的答案就像 GridView 一样简单 - 它可以在下一行添加视图
  • user2976267 假设您有 3 列和 x 行。您仍然需要为不同的屏幕尺寸指定图像的尺寸。不过,网格视图比嵌套线性布局要好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-20
  • 2010-12-08
  • 1970-01-01
  • 2011-01-19
  • 1970-01-01
相关资源
最近更新 更多