创建比例视图的最有效方法

时间:2010-06-29 07:01:36

标签: android

我想创建一个如下所示的全屏页面:

 ---------------------------------------  
| --------  --------------------------- |  
||        ||          TextView         ||  
||        | --------------------------- |  
|| Image  | -----------------  -------- |  
|| View   ||                 ||        ||  
||        ||    TextView     ||        ||  
||        ||                 || Image  ||  
||        ||                 || View   ||  
| --------  ----------------- |        ||  
| --------------------------- |        ||  
||          TextView         ||        ||  
| ---------------------------  -------- |  
 ---------------------------------------  

其中每个ImageView占用父布局宽度的最多20%。

主要问题:真的......最好的方法是什么?经过几个小时的搜索,我能想到的最好的想法是获得屏幕的宽度,并简单地将视图的宽度设置为最大20%。但是,这直观地看起来并不是最佳实践解决方案。 (例如,如果应用程序没有全屏运行,则此解决方案将无效。)LinearLayout将不适用于页面布局的方式(看起来我必须使用RelativeLayout)。而且我认为最好根据父视图的宽度设置视图的宽度(而不是屏幕的宽度),但我也不清楚如何做到这一点,因为当时我正在尝试为了设置我的子视图的宽度,parentView.getWidth()返回0.有没有人有如何创建页面的任何好的,干净的解决方案,如上所示?

次要问题:有人知道如何在图像周围包装文字,如上所示?经过更长时间的搜索,我无法找到解决方案;好像你需要将几个TextView拼接在一起。有没有更好的方法让我失踪?

感谢任何人都能提供的任何信息。

5 个答案:

答案 0 :(得分:1)

您可以在XML布局中使用android:layout_weight属性来实现此目的。

答案 1 :(得分:1)

您可以通过每个部分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>

其他部分应与不同的重力对齐。

我知道很多布局和权重,这个解决方案定义并不是最好的性能。也许其他人可以改进它

答案 2 :(得分:0)

我不确定这是否可行。即使它确定它是一个小于4“大的屏幕的最佳布局?也许不是试图弄清楚如何做这个布局提出更适合小屏幕的那些。

如果android sdk很难做到,那么你可能不应该这样做。

答案 3 :(得分:0)

关于第二个问题,您可以使用

将图像定位到TextView的顶部,底部,右侧或左侧
android:drawableTop 
android:drawableBottom 
android:drawableLeft
android:drawableRight

您也可以使用

设置填充
android:drawablePadding

check the API

当您指定设计的更多细节时,我会尝试回答第一个问题。无论如何,我建议使用RelativeLayout。

答案 4 :(得分:0)

嘿,谢谢你的回复。进一步澄清:

a)layout_weight似乎不适用于RelativeLayouts;看起来它只是一个LinearLayout标签。正如matto在上面指出的那样,我看不到用LinearLayouts创建我的特定设置的任何方法,因为右图像没有与左对齐。 (如果有办法,你可以告诉我......)

b)啊,谢谢。不知怎的,我错过了drawableLeft等标签。我会尝试一下,看看是不是这样。

c)至于屏幕尺寸,我正在考虑安装Android平板电脑。没有任何大牌明星,但可能有些人会下线。我同意,在一个小的4英寸屏幕上,这种布局可能没有意义。

我不确定我的问题还需要哪些其他设计细节;我认为我上面提到的布局就足够了。还有什么具体的我可以说澄清这个问题吗?