Android - TextView忽略“wrap_content”

时间:2013-10-23 17:35:30

标签: android android-layout android-linearlayout

我在Android中创建布局时遇到了问题。

我有一个线性布局,应该从上到下显示TextView,EditView和Button。 问题是,当我将TextView的width和height属性设置为“wrap_content”时,它的行为类似于“fill_parent”,并在宽度和高度上填充整个屏幕。 作为结论,将不会显示其他2个元素(EditView和Button)。

我无法弄清楚我做错了什么。

这是我的XML文件:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/app_background"
    android:gravity="center_horizontal"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/text_nickname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dp"
        android:gravity="center_horizontal"
        android:text="@string/label_nickname"
        android:textColor="#000000"
        android:textSize="15sp" />

    <EditText
        android:id="@+id/edit_nickname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="@string/hint_insert_nickname"
        android:shadowColor="#000000"
        android:shadowDx="-1"
        android:shadowDy="-1"
        android:shadowRadius="1"
        android:textSize="15sp" />

    <Button
        android:id="@+id/button_play"
        style="@style/MainButtonTheme"
        android:layout_marginTop="25dp"
        android:onClick="click_playButton"
        android:text="@string/button_start" />
<  /  LinearLayout>

期待您的意见。

很多问候

Siggy

编辑:

MainButtonStyle:

    <style name="MainButtonTheme">
    <item name="android:background">@drawable/states_menu_button</item>
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:textSize">25sp</item>
    <item name="android:textColor">#000000</item>
    <item name="android:textStyle">bold</item>
</style>

编辑#2:

以下是现在看起来如何以及所需内容的截图:

现状:

enter image description here

期望状态:

enter image description here

我在手机上测试过它,手机上也是如此。

6 个答案:

答案 0 :(得分:1)

好的,我发现了这个问题。 这对我来说似乎是个错误。

在我的样式文件中,我为整个应用程序定义了一个背景,如下所示:

    <style name="AppTheme" parent="AppBaseTheme">
    <item name="android:background">@drawable/app_background</item>
    </style>

当我删除以下行时:

<item name="android:background">@drawable/app_background</item>

带有wrap_content的TextView的行为应该如此。

我真的不知道背景图片与它有什么关系。 如果有人能告诉我,我会很高兴:)

问候

Siggy

答案 1 :(得分:1)

当我找到解决方案时,并没有正确答案。

问题是,因为你使用过:name =&#34; android:background&#34; 它不是整个应用程序的背景,而是每个视图的背景。你应该使用:name =&#34; android:windowBackground&#34;仅为应用设置背景。

答案 2 :(得分:0)

试试此代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"

              android:gravity="center_horizontal"
              android:orientation="vertical" >

    <TextView
            android:id="@+id/text_nickname"
            android:layout_width="10dip"
            android:layout_height="10dip"
            android:layout_marginTop="15dp"
            android:gravity="center_horizontal"

            android:textColor="#000000"
            android:textSize="15sp" />

    <EditText
            android:id="@+id/edit_nickname"
            android:layout_width="300dp"
            android:layout_height="wrap_content"

            android:shadowColor="#000000"
            android:shadowDx="-1"
            android:shadowDy="-1"
            android:shadowRadius="1"
            android:textSize="15sp" android:layout_marginLeft="3dp"/>

    <Button
            android:id="@+id/button_play"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_marginTop="25dp"
            android:onClick="click_playButton"
            android:text="Button" />
</LinearLayout>

答案 3 :(得分:0)

尝试一下,我做了一些改动,即删除了style属性:

<TextView
    android:id="@+id/text_nickname"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="15dp"
    android:gravity="center_horizontal"
    android:text="label_nickname"
    android:textColor="#000000"
    android:textSize="15sp" />

<EditText
    android:id="@+id/edit_nickname"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:hint="hint_insert_nickname"
    android:shadowColor="#000000"
    android:shadowDx="-1"
    android:shadowDy="-1"
    android:shadowRadius="1"
    android:textSize="15sp" />

<Button
    android:textSize="25dp"
    android:id="@+id/button_play"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="25dp"
    android:onClick="click_playButton"
    android:text="button_start" />

答案 4 :(得分:0)

// try this
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/app_background"
    android:padding="5dp"
    android:orientation="vertical"
    android:gravity="center">
    <LinearLayout
        android:layout_height="0dp"
        android:layout_width="match_parent"
        android:layout_weight="1">
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="center"
                android:padding="5dp"
                android:orientation="vertical" >

                <TextView
                    android:id="@+id/text_nickname"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="15dp"
                    android:text="@string/label_nickname"
                    android:textColor="#000000"
                    android:textSize="15sp" />

                <EditText
                    android:id="@+id/edit_nickname"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="top"
                    android:layout_marginTop="10dp"
                    android:hint="@string/hint_insert_nickname"
                    android:shadowColor="#000000"
                    android:shadowDx="-1"
                    android:shadowDy="-1"
                    android:shadowRadius="1"
                    android:textSize="15sp" />


            </LinearLayout>
        </ScrollView>
    </LinearLayout>
    <Button
        android:id="@+id/button_play"
        style="@style/MainButtonTheme"
        android:onClick="click_playButton"
        android:padding="5dp"
        android:text="@string/button_start" />
</LinearLayout>

答案 5 :(得分:-1)

尝试使用相对布局,它对我有用,看看是否有帮助。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#F88017" 
   >


    <TextView
        android:layout_centerHorizontal="true"
        android:id="@+id/text_nickname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="15dp"
        android:text="Nickname"
        android:textColor="#000000"
        android:textSize="15sp" />

    <EditText
        android:layout_centerHorizontal="true"
        android:layout_marginTop="10dp"
        android:layout_below="@+id/text_nickname"
        android:id="@+id/edit_nickname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="insert_nickname"
        android:shadowColor="#000000"
        android:shadowDx="-1"
        android:shadowDy="-1"
        android:shadowRadius="1"
        android:textSize="15sp" />

    <Button
           android:layout_centerHorizontal="true"
        android:layout_below="@+id/edit_nickname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="25dp"
        android:onClick="click_playButton"
        android:text="Start"
        android:textColor="#000000"
        android:textSize="25dp"
        android:textStyle="bold" />

</RelativeLayout>