我的layout.xml中有以下代码。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_height="wrap_content" android:layout_width="fill_parent">
<EditText android:hint="@string/feed_url"
android:id="@+id/feedUrl" android:textSize="14dp" android:inputType="textUri"
android:layout_marginRight="45dp" android:layout_height="wrap_content" android:layout_width="fill_parent">
</EditText>
<Button android:id="@+id/getGraph"
android:text="@string/get"
android:layout_toRightOf="@id/feedUrl"
android:layout_alignParentRight="true"
android:layout_height="wrap_content" android:width="45dp" android:layout_width="wrap_content">
</Button>
</RelativeLayout>
<WebView android:id="@+id/wv1" android:layout_height="wrap_content"
android:layout_width="fill_parent" />
</LinearLayout>
在eclipse插件布局创建器中,EditText和按钮正确显示。 (见下面的截图)
但是在设备和模拟器上,按钮未隐藏。 (见下面的截图)
知道按钮隐藏在设备中的原因吗?
答案 0 :(得分:6)
尝试对代码进行以下更改。您必须首先定义按钮,因为它具有固定宽度,然后放置EditText以填充位于按钮左侧的剩余空间。该按钮也必须首先定义(在Android 2.2之前,即)。
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="fill_parent">
<Button
android:id="@+id/getGraph"
android:text="@string/get"
android:layout_alignParentRight="true"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
/>
<EditText
android:hint="@string/feed_url"
android:id="@+id/feedUrl"
android:textSize="14dp"
android:inputType="textUri"
android:layout_marginRight="45dp"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_toLeftOf="@id/getGraph"
/>
</RelativeLayout>
答案 1 :(得分:0)
我无法在布局构建器中看到该按钮...原因,我认为EditText
宽度是填充父级,因此它会填充父按钮。如果必须使用RelativeLayout
,则需要明确定义EditText
的宽度。否则,您可能需要切换到水平LinearLayout
并将编辑框的权重设置为“1”。
此外,RelativeLayout
还有无效选项:
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal
答案 2 :(得分:0)
您也可以使用LinearLayout而不是RelativeLayout来存档它。您可以使用android:layout_weight
使Button不被EditText覆盖。以下是可能有效的示例xml:
<LinearLayout android:orientation="horizontal"
android:layout_height="wrap_content" android:layout_width="fill_parent">
<EditText android:hint="@string/feed_url"
android:id="@+id/feedUrl" android:textSize="14dp"
android:inputType="textUri" android:layout_marginRight="45dp"
android:layout_height="wrap_content" android:layout_width="fill_parent" />
<Button android:id="@+id/getGraph" android:text="@string/get"
android:layout_height="wrap_content" android:width="45dp"
android:layout_width="wrap_content"
android:layout_weight="1" />
</LinearLayout>