Android 创建比例视图的最有效方法
我想创建一个全屏页面,如下所示:Android 创建比例视图的最有效方法,android,Android,我想创建一个全屏页面,如下所示: --------------------------------------- | -------- --------------------------- | || || TextView || || | --------------------------- | || Image | ----------------- -------- | || View ||
---------------------------------------
| -------- --------------------------- |
|| || TextView ||
|| | --------------------------- |
|| Image | ----------------- -------- |
|| View || || ||
|| || TextView || ||
|| || || Image ||
|| || || View ||
| -------- ----------------- | ||
| --------------------------- | ||
|| TextView || ||
| --------------------------- -------- |
---------------------------------------
其中,每个ImageView最多占父布局宽度的20%
主要问题:真的吗……最好的方法是什么?经过数小时的搜索,我能想到的最好办法是获得屏幕的宽度,并简单地将视图的宽度设置为最大值的20%。然而,从直觉上看,这似乎不是一个最佳实践解决方案。(例如,如果应用程序未全屏运行,此解决方案将不起作用。)线性布局与页面布局方式不匹配(似乎我必须使用RelativeLayout)。我认为最好根据父视图的宽度(相对于屏幕的宽度)设置视图的宽度,但我也不清楚如何设置,因为在我尝试设置子视图的宽度时,parentView.getWidth()返回0。对于如何创建如上所示的页面,是否有任何好的、干净的解决方案
第二个问题:有人知道如何像上面所示的那样将文本环绕在图像周围吗?经过几个小时的搜索,我找不到解决这个问题的办法;看起来你需要把几个文本视图缝合在一起。有没有更好的方法让我错过
感谢任何人提供的任何信息。我不确定这是否可行。即使是这样,你确定这是小于4英寸的屏幕的最佳布局吗?也许你不需要想办法,而应该想出更适合小屏幕的布局
如果安卓sdk让你很难做到这一点,那么这可能不是你应该做的事情。关于第二个问题,你可以使用
android:drawableTop
android:drawableBottom
android:drawableLeft
android:drawableRight
您还可以使用设置填充
android:drawablePadding
当您指定设计的更多细节时,我将尝试回答第一个问题。无论如何,我建议使用RelativeLayout。您可以在XML layout中使用android:layout\u weight属性来实现这一点。嘿,感谢您的回答。一些进一步的澄清: a) layout_weight似乎不适用于RelativeLayouts;看起来它是一个仅限LinearLayouts的标记。正如matto在上面指出的,我看不到任何方法来创建带有LinearLayouts的特定设置,因为右图像与左图像不对齐。(如果有方法,请告诉我。) b) 啊,谢谢。不知怎的,我错过了drawableLeft等标签。我会试试看是否有效果 c) 至于屏幕大小,我考虑的是android平板电脑。目前还没有大牌的平板电脑,但可能会有一些大牌。不过我同意,在4英寸的小屏幕上,这种布局可能没有意义
我不确定我的问题还需要什么其他的设计细节;我想我在上面画的布局就足够了。我还可以说些什么来澄清这个问题吗?你可以通过每个部分3个线性布局来实现这一点
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.2"
android:orientation="horizontal"
android:weightSum="1" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.2"
android:orientation="vertical"
android:weightSum="1" >
<ImageView .... />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
其他部分应与不同的重力对齐
我知道有很多布局和权重,这个解决方案肯定不是性能最好的。也许其他人可以改进它图像是静态的还是动态的?不同大小的图像是否可以放在同一个位置,并且必须适合它们?文本呢?图像是动态的。它们将保持其纵横比,可以是任何大小,最大为屏幕宽度的20%。图像将始终位于同一位置(即其左上角始终位于同一点)。文本也是动态的;它将占用剩余的空间。再次澄清一下,我可以像上面提到的那样创建这个布局(即通过将ImageView.setMaxWidth()设置为屏幕宽度的20%),但同样,如果应用程序不是在全屏模式下运行,这将不起作用。如果有人有什么东西,你可以提供代码来做吗。我很想看看这是怎么回事。很容易看出,如果Askor不想把右边的图像放在左边的中间,那该怎么办。我并不是说你错了,只是想看看会怎样做。没有骰子。在上面的三个文本视图中,我试图让它们成为一个包裹两个图像的单元,但是android:drawable标签没有给我这样的包装。我使用了drawableLeft,图像确实显示在左侧,但图像底部的文本实际上并没有环绕在图像下面。