Android有一些相当于iPhone的支柱和弹簧吗?

时间:2011-03-08 12:59:48

标签: android iphone layout

我一直在努力找到一些与Android的支柱和弹簧相当的东西。并且不要说引力: - )

确实说重力,然后解释我如何阻止在LinearLayout或RelativeLayout中将视图从屏幕上推下来。或者向我展示一些其他布局,允许填充屏幕而不会让视线突然出现。

在iPhone界面构建器中,我只需适当地设置弹簧,以使每个视图占用尽可能多的空间,但不会更多。这使得iPhone布局可以很好地处理方向变化。

在Android中,我读到的主要方法似乎是创建多个布局文件夹,如layout-port和layout-land,然后在它们之间复制XML布局文件,但这似乎非常容易出错,而且仍然是我能做到的唯一方法停止从屏幕上按下其他按钮获取大型自定义视图是为了特定的屏幕尺寸和方向精确设置其layout_height。鉴于Android显示器的市场范围进入市场,感觉它会越来越痛苦。

以下是一个例子:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:text="@string/hello" />
    <ImageView android:id="@+id/imageView1" android:src="@drawable/icon"
        android:layout_height="320dip" android:layout_width="fill_parent"></ImageView>
    <SeekBar android:layout_height="wrap_content" android:id="@+id/seekBar1"
        android:layout_width="fill_parent"></SeekBar>
</LinearLayout>

这些都只是默认小部件。我无视你找到一些其他的方法来设置ImageView高度,以便它尽可能多地填充屏幕,而不会将搜索栏击不出视线。尝试将Imageview android:layout_height设置为fill_parent以查看我的意思。

我尝试了相对布局和表格布局,以及各种技巧。也许我错过了一些简单的东西,但如果我能找到它,我会被诅咒......

我能想到的唯一解决方案(但尚未真正尝试)是在代码中做一些事情来检测屏幕大小和其他小部件,但是我不愿意去那条路,因为看起来应该有一个简单的XML布局解决方案。

2 个答案:

答案 0 :(得分:1)

在设置android:layout_weightandroid:layout_widthandroid:layout_height时尝试使用0dp(取决于父视图的android:orientation值)。

在Android中没有比你想做的更好的等价物......

答案 1 :(得分:0)

我有类似的问题(说实话更多)所以我开发了SpringLayout:https://github.com/sulewicz/springlayout。 如果我理解正确,那么我认为我设法达到你想要的效果(图像占用尽可能多的空间):

<?xml version="1.0" encoding="utf-8"?>
<org.coderoller.springlayout.SpringLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white" >

    <TextView
        android:id="@+id/A"
        android:layout_width="match_parent"
        android:layout_height="32dp"
        app:layout_alignParentTop="true"
        android:text="Test" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_below="@id/A"
        app:layout_above="@+id/seekBar1"
        android:src="@drawable/ic_launcher" />

    <SeekBar
        android:id="@id/seekBar1"
        android:layout_width="match_parent"
        android:layout_height="32dp"
        app:layout_alignParentBottom="true" />

</org.coderoller.springlayout.SpringLayout>

以下是screenshot