致命错误:您必须提供layout_width属性

时间:2017-12-11 23:05:36

标签: android android-layout

我对android编程非常陌生,在尝试运行这个简单的程序时,我收到错误:"Unfortunately your app stopped"

所以我去看了 Logcat 文件,我认为这就是问题所在:

E/AndroidRuntime: FATAL EXCEPTION: main
                                   Process:  org.example.tictactoe, PID: 3202
                                             java.lang.RuntimeException: Unable to start activity ComponentInfo{org.example.tictactoe/org.example.tictactoe.MainActivity}: java.lang.RuntimeException: Binary XML file line #2: You must supply a layout_width attribute.

但是看着我的文件,我看不到它丢失的地方。

这是我使用的文件.xml:

activity_main.xml中

<FrameLayout
xmlns:android="http://schemas.android.com/apk/lib/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false"
tools:context=".TicTacToeActivity">

<fragment
    android:id="@+id/main_fragment"
    android:name="org.example.tictactoe.MainFragment"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    tools:layout="@layout/fragment_main"/>

</FrameLayout>

fragment_main.xml

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/lib/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:background="@drawable/menu_background"
  android:elevation="@dimen/elevation_high"
  android:orientation="vertical"
  android:padding="@dimen/menu_padding"
  tools:context=".TicTacToeActivity">

    <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="@dimen/menu_space"
    android:text="@string/long_app_name"
    android:textAppearance="?android:textAppearanceLarge"
    android:textSize="@dimen/menu_text_size"
    />

    <Button
    android:id="@+id/continue_button"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="@dimen/menu_button_margin"
    android:padding="@dimen/menu_button_padding"
    android:text="@string/continue_label"
    />

    <Button
    android:id="@+id/new_button"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_margin="@dimen/menu_button_margin"
    android:padding="@dimen/menu_button_padding"
    android:text="@string/new_game_label"
    />

     <Button
     android:id="@+id/about_button"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_gravity="center"
     android:layout_margin="@dimen/menu_button_margin"
     android:padding="@dimen/menu_button_padding"
     android:text="@string/about_label"
     />

</LinearLayout>

menu_background

<shape
  xmlns:android="http://schemas.android.com/apk/lib/android"
  android:shape="rectangle">
    <stroke
       android:width="@dimen/stroke_width"
       android:color="@color/border_color"/>
    <solid android:color="@color/field_color"/>
    <corners android:radius="@dimen/corner_radius"/>
</shape>

我无法找到缺少layout_width属性的位置。

3 个答案:

答案 0 :(得分:0)

<link rel="stylesheet" href="/static/styles/main.css" type="text/css"> 中的"wrap_content "layout_width中的layout_height有空格。

答案 1 :(得分:0)

布局中有空格。例如,在fragment_main.xml

<LinearLayout
xmlns:android="http://schemas.android.com/apk/lib/android "
xmlns:tools="http://schemas.android.com/tools "

在布局中使用"的查找和替换。

更新

以下xml中还有另一个错误:

您无法使用class="org.example.tictactoe.MainFragment"。但是您需要使用android:name属性。所以,它应该是:

<fragment
    android:id="@+id/main_fragment"
    android:name="org.example.tictactoe.MainFragment"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    tools:layout="@layout/fragment_main"/>

在xml代码中发现了另一个问题。使用xmlns:android="http://schemas.android.com/apk/res/android"代替xmlns:android="http://schemas.android.com/apk/lib/android"

答案 2 :(得分:0)

android:layout_gravity="@layout/fragment_main"

中删除activity_main.xml

android:layout_gravity需要特定参数android:layout_gravity Reference Link

Fragments reference