LinearLayout方向和按钮外观

时间:2015-08-23 18:31:10

标签: android

除非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中的模拟器中测试输出

3 个答案:

答案 0 :(得分:1)

这是因为您的EditText在宽度参数中有match_parent。 由于您将方向设置为水平,因此Android会尝试逐个布局您的子视图。因此,带有match_parent的EditText占用了所有的屏幕宽度,然后只添加了Button,但是你看不到它。您需要修复EditText宽度。

您有3个选项:

  1. EditText宽度更改为wrap_content
  2. 添加到EditText android:layout_weight="1"并将宽度更改为wrap_content
  3. 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>