除非LinearLayout的方向更改为“垂直”,否则以下coe片段中的Button不起作用。我发现这种行为很特殊。任何答案/想法??
文件:activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.androidquickstart.MainActivity" >
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter your name"
android:id="@+id/activity_main_name" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Confirm Name"
android:onClick="confirmName" />
</LinearLayout>
SideNote:我尝试在Mac中的模拟器中测试输出
答案 0 :(得分:1)
这是因为您的EditText
在宽度参数中有match_parent
。
由于您将方向设置为水平,因此Android会尝试逐个布局您的子视图。因此,带有match_parent的EditText占用了所有的屏幕宽度,然后只添加了Button,但是你看不到它。您需要修复EditText宽度。
您有3个选项:
EditText
宽度更改为wrap_content
EditText
android:layout_weight="1"
并将宽度更改为wrap_content
EditText
宽度更改为精确dp
值答案 1 :(得分:1)
你需要做这样的事情:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.androidquickstart.MainActivity" >
<EditText
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="Enter your name"
android:id="@+id/activity_main_name" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Confirm Name"
android:onClick="confirmName" />
</LinearLayout>
在视图中添加layout_weight
会根据您要设置的值缩放视图。在此示例中,EditText宽度与Button宽度的比率将为1:1。
此外,我将视图的宽度设置为0dp的原因是为了正确计算权重是必须的。安装应用程序时,Android Studio永远不会知道屏幕的大小...因此,在使用layout_weight
时,除了0dp之外,您无法指定其他任何内容。
答案 2 :(得分:1)
简单的回答。您的EditText
已经用完所有屏幕。将android:layout_width = "match_parent"
更改为android:layout_width="wrap_content"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.androidquickstart.MainActivity" >
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Enter your name"
android:id="@+id/activity_main_name" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Confirm Name"
android:onClick="confirmName" />
</LinearLayout>