android.view.InflateException:二进制XML文件第18行:二进制XML文件第18行:膨胀类Button时出错

时间:2018-08-25 10:33:35

标签: android

膨胀类Button的错误

代码如下:

activity_main

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical"
    android:background="@color/colorPrimaryDark">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:gravity="center"
    android:layout_marginTop="100dp">

    <Button
        android:layout_width="300dp"
        android:layout_height="50dp"
        android:padding="15dp"
        android:fontFamily="@font/nunito_semibold"
        android:background="@drawable/border_white"
        android:text="Donor"
        android:textStyle="bold"
        android:textColor="#ffffff"
        android:textSize="16dp"
        android:id="@+id/donor"
        />
    <Button
        android:layout_width="300dp"
        android:layout_height="50dp"
        android:padding="15dp"
        android:fontFamily="@font/nunito_semibold"
        android:background="@drawable/border_white"
        android:layout_marginBottom="20dp"
        android:text="Recipient"
        android:textStyle="bold"
        android:textColor="#ffffff"
        android:textSize="16dp"
        android:id="@+id/recipient"

        />
</LinearLayout>

</RelativeLayout>

MainActivity:

package com.example.ankit.bloodbank;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    Button mDonor,mRecipient;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mDonor =(Button)findViewById(R.id.donor);
        mRecipient = (Button)findViewById(R.id.recipient);
        mDonor.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this,RegisterActivity.class);
                startActivity(intent);
            }
        });
        mRecipient.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this,RecipientActivity.class);
                startActivity(intent);
            }
        });
    }

}

边界:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape>
        <corners android:radius="30dp"/>
        <stroke android:color="#ffffff" android:width="1dp"/>
    </shape>
</item>
    <item android:state_pressed="true">
        <shape>
            <solid android:color="@color/colorPrimaryDark"/>
        </shape>
    </item>
</selector>

请帮助修复它。 MainActivity的setContentView中显示错误。 并且此错误显示在项目的每个活动中。我只是尝试首先启动另一个活动,它显示了完全相同的错误,即setContentView中的错误。

3 个答案:

答案 0 :(得分:0)

border_white.xml文件夹中找到res/drawable,并检查结尾处是否有类似(v24)的内容。
如果是这种情况,请复制此文件并将其粘贴到res/drawable而不是res/drawable-v24

答案 1 :(得分:0)

<selector>中的drawable/border_white.xml节点缺少必需的属性android:layout_heightandroid:layout_width,这使其无效。添加缺少的属性,它应该会膨胀。它们很可能都应该是match_parent(或wrap_content)。

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

答案 2 :(得分:0)

我不明白您为什么在Linear RelativeLayout中使用LinearLayout,而在Orientation:Vertical中使用。您必须使用SP进行文本测量,并且正在使用DP。另外,您必须使用@String进入res文件夹,并使用@Color和@dimen。 从未使用xmlns:app =“ http://schemas.android.com/apk/res-auto”库。 您确定您的字体具有粗体样式吗?为什么要使用android:state_pressed =“ true” ?,当您按下按钮时会自动启动新活动。

    <?xml version="1.0" encoding="utf-8"?>
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:gravity="center"
            tools:context=".MainActivity"
            android:background="@color/colorPrimaryDark">

                <Button
                    android:layout_width="@dimen/button_width"
                    android:layout_height="@dimen/button_height"
                    android:padding="@dimen/button_padding"
                    android:text="@string/donor"
                    android:fontFamily="@font/nunito_semibold"
                    android:background="@drawable/border_white"
                    android:textStyle="bold"
                    android:textColor="@android:color/white"
                    android:textSize="16sp"
                    android:id="@+id/donor"
                    />
                <Button
                    android:layout_width="@dimen/button_width"
                    android:layout_height="@dimen/button_height"
                    android:padding="@dimen/button_padding"
                    android:layout_marginBottom="@dimen/button_margin"
                    android:text="@string/recipient"
                    android:fontFamily="@font/nunito_semibold"
                    android:background="@drawable/border_white"
                    android:textStyle="bold"
                    android:textColor="@android:color/white"
                    android:textSize="16sp"
                    android:id="@+id/recipient"

                    />

        </LinearLayout>