Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 创建比例视图的最有效方法_Android - Fatal编程技术网

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,图像确实显示在左侧,但图像底部的文本实际上并没有环绕在图像下面。