Android:相对布局问题

时间:2011-01-18 08:09:14

标签: android android-layout

我的xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent">
    <TextView android:id="@+id/Title" android:text="title"
        android:layout_width="fill_parent" android:layout_height="wrap_content"
        android:singleLine="true" android:layout_alignParentTop="true" />
    <EditText android:id="@+id/ReplyText" android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:gravity="top"
        android:layout_below="@+id/Title" android:layout_above="@+id/Save" />
<!--    <WebView android:id="@+id/webview" android:layout_width="fill_parent"-->
<!--        android:layout_height="fill_parent" android:layout_below="@+id/Title"-->
<!--        android:layout_above="@+id/Save"/>-->
    <Button android:text="Save" android:id="@+id/Save"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true" />
</RelativeLayout>

输出sdk 3(1.5)和sdk 9(2.3) alt text

问题:为什么EditText没有以1.5版本显示?

必须有这样的解决方案,因为如果我用WebView替换EditText 在onCreate方法中添加了一些代码:

WebView mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadData("test", "text/html", "utf-8");
mWebView.setWebViewClient(new WebViewClient());

它在两个版本中都完美地显示了WebView。

目标:我想设置页眉和页脚元素,如图所示,中间元素应该具有其余部分的完整高度/宽度。

2 个答案:

答案 0 :(得分:4)

不确定这是否可能是问题,但这是错误的:

android:layout_below="@+id/Title" android:layout_above="@+id/Save"

@+id表示添加新ID,在这种情况下,您将引用已定义的ID(您在android:id="@+id/Title"android:id="@+id/Save"中定义它们。)

此外,在组件本身之前引用id时,我遇到了一些问题(在这种情况下,您在EditText中说它位于按钮上方,按钮稍后定义)

我会写这样的整个布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <TextView android:id="@+id/Title"
        android:text="title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:layout_alignParentTop="true" />
    <Button android:text="Save"
        android:id="@+id/Save"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true" />
    <EditText android:id="@+id/ReplyText"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="top"
        android:layout_below="@id/Title"
        android:layout_above="@id/Save" />

</RelativeLayout>

答案 1 :(得分:-1)

如果深度分层可能是个问题,您也可以像这样定义XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

<TextView android:id="@+id/Title"
    android:text="title"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:singleLine="true"
    android:layout_alignParentTop="true" />

 <EditText android:id="@+id/ReplyText"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="top"
        android:layout_below="@id/Title"
        android:layout_above="@+id/Save" />

    <Button android:text="Save"
        android:id="@id/Save"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true" />

</RelativeLayout>

请注意,id不是随元素本身添加的,而是首先提到的:

  android:layout_above="@+id/Save" />
    <Button android:text="Save"
        android:id="@id/Save"