android studio添加控件无法更改长宽,更改过后运行就闪退

2021-01-27 12:17:43.039 19096-19096/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.myapplication, PID: 19096
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapplication/com.example.myapplication.MainActivity}: android.view.InflateException: Binary XML file line #22 in com.example.myapplication:layout/activity_main: Can't convert value at index 6 to dimension: type=0x4
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3450)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3602)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2067)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7660)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
     Caused by: android.view.InflateException: Binary XML file line #22 in com.example.myapplication:layout/activity_main: Can't convert value at index 6 to dimension: type=0x4
     Caused by: java.lang.UnsupportedOperationException: Can't convert value at index 6 to dimension: type=0x4
        at android.content.res.TypedArray.getDimensionPixelSize(TypedArray.java:788)
        at android.view.ViewGroup$MarginLayoutParams.<init>(ViewGroup.java:8480)
        at android.widget.RelativeLayout$LayoutParams.<init>(RelativeLayout.java:1296)
        at android.widget.RelativeLayout.generateLayoutParams(RelativeLayout.java:1110)
        at android.widget.RelativeLayout.generateLayoutParams(RelativeLayout.java:89)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:1123)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:680)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:532)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:479)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
        at com.example.myapplication.MainActivity.onCreate(MainActivity.java:14)
        at android.app.Activity.performCreate(Activity.java:8000)
        at android.app.Activity.performCreate(Activity.java:7984)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1312)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3423)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3602)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2067)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7660)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
这是Logcat

就加了一个button,无论是button还是其他控件,只要更改android:layout_width="" android:layout_height=""两个不为默认值,例如:
android:layout_width="200dp" android:layout_height="200dp"就会闪退,没有报错
只有默认值不会闪退
图下是代码
<Button

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/login"
    android:textSize="@dimen/size_20sp"
    android:textColor="#ffffff"
    />

看了下网上的答案,你可以尝试如下方法:

当时在适配720和480两个分辨率的机器,20dp属性只在默认的values和480下面的values中有,但是在720机器上,因为在values-720文件夹下找不到,所以报错

解决办法

在对应分辨率的文件夹下都添加一下dimens资源

这个方法可能不适合所有的情况,希望可以帮助到大家

图片: 在这里插入图片描述

设置的宽度和高度不能超过模拟器分辨率,可将宽和高缩小为10dp再试试

用真机运行试试