简体   繁体   English

为什么这个xml布局会使我的应用崩溃?

[英]why is this xml layout crashing my app?

This layout is used as the layout for items in a listView. 此布局用作listView中项目的布局。 I had a really simple layout, and everything was working fine, but now i have changed it a little and it is crashing my app when it tries to load.. Not sure what im doing wrong 我的布局非常简单,并且一切正常,但是现在我做了一些更改,尝试加载时崩溃了我的应用程序。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:weightSum="8"
    android:layout_width="fill_parent"
    android:layout_height="75dp">

   <TextView android:id="@+id/priceText"
        android:layout_weight="2"
        android:layout_height="fill_parent"
        android:gravity="center_vertical"
        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:textStyle="bold"
        android:textSize="22dp"
        android:textColor="#000000"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp" 
        android:layout_marginLeft="5dp" />

   <LinearLayout
        android:layout_weight="5"
        android:layout_height="fill_parent"
        android:weightSum="2" 
        android:orientation="vertical">

       <TextView android:id="@+id/storeText"
            android:layout_width="fill_parent"
            android:layout_weight="1"
            android:gravity="right|bottom"
            android:textStyle="bold"
            android:textSize="22dp"
            android:textColor="#000000"
            android:layout_marginTop="5dp"
            android:layout_marginBottom="5dp" />

       <TextView android:id="@+id/distanceText"
            android:layout_width="fill_parent"
            android:layout_weight="1"
            android:gravity="right|top"
            android:textSize="16dp"
            android:textColor="#545454"
            android:layout_marginTop="5dp"
            android:layout_marginBottom="5dp" />

   </LinearLayout>

   <TextView
       android:layout_height="fill_parent"
       android:layout_alignParentBottom="true"
       android:layout_alignParentTop="true"
       android:layout_marginBottom="5dp"
       android:layout_marginTop="5dp"
       android:layout_weight="1"
       android:gravity="right|center_vertical"
       android:text=">"
       android:textColor="#000000"
       android:textSize="36dp"
       android:textStyle="bold" 
       android:layout_marginRight="5dp" />

</LinearLayout>

When you use android:layout_weight put layout_width="0dip" 当您使用android:layout_weight时,将layout_width =“ 0dip”

Working code 工作代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:weightSum="8"
    android:layout_width="fill_parent"
    android:layout_height="75dp">

   <TextView android:id="@+id/priceText"
        android:layout_weight="2"
        android:layout_width="0dip"
        android:layout_height="fill_parent"
        android:gravity="center_vertical"
        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:textStyle="bold"
        android:textSize="22dp"
        android:textColor="#000000"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp" 
        android:layout_marginLeft="5dp" />

   <LinearLayout
        android:layout_weight="5"
        android:layout_width="0dip"
        android:layout_height="fill_parent"
        android:weightSum="2" 
        android:orientation="vertical">

       <TextView
           android:id="@+id/storeText"
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:layout_marginBottom="5dp"
           android:layout_marginTop="5dp"
           android:layout_weight="1"
           android:gravity="right|bottom"
           android:textColor="#000000"
           android:textSize="22dp"
           android:textStyle="bold" />

       <TextView
           android:id="@+id/distanceText"
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:layout_marginBottom="5dp"
           android:layout_marginTop="5dp"
           android:layout_weight="1"
           android:gravity="right|top"
           android:textColor="#545454"
           android:textSize="16dp" />

   </LinearLayout>

   <TextView
       android:layout_height="fill_parent"
       android:layout_width="wrap_content"
       android:layout_alignParentBottom="true"
       android:layout_alignParentTop="true"
       android:layout_marginBottom="5dp"
       android:layout_marginTop="5dp"
       android:layout_weight="1"
       android:gravity="right|center_vertical"
       android:text=">"
       android:textColor="#000000"
       android:textSize="36dp"
       android:textStyle="bold" 
       android:layout_marginRight="5dp" />

</LinearLayout>

You need to add android:layout_width=".." and android:layout_height=".." to all the views: 您需要将android:layout_width=".."android:layout_height=".."到所有视图:

   <TextView android:id="@+id/storeText"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="right|bottom"
        android:textStyle="bold"
        android:textSize="22dp"
        android:textColor="#000000"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp" />

   <TextView android:id="@+id/distanceText"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="right|top"
        android:textSize="16dp"
        android:textColor="#545454"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp" />

   </LinearLayout>

  <TextView
   android:layout_height="fill_parent"
   android:layout_width="0dp"
   android:layout_alignParentBottom="true"
   android:layout_alignParentTop="true"
   android:layout_marginBottom="5dp"
   android:layout_marginTop="5dp"
   android:layout_weight="1"
   android:gravity="right|center_vertical"
   android:text=">"
   android:textColor="#000000"
   android:textSize="36dp"
   android:textStyle="bold" 
   android:layout_marginRight="5dp" />

</LinearLayout>

every element you gave android_layout_weight you didn't give a width. 您赋予android_layout_weight的每个元素都没有给出宽度。 If you gave this weight so the element takes a certain space you should give the layout android:layout_width="0" so it takes the weight as width 如果您赋予此权重以使元素占用一定的空间,则应给布局android:layout_width =“ 0”使其权重为宽度

height and width are required tags for every element 高度和宽度是每个元素的必需标签

you have missed some layout width and layout height attributes. 您错过了一些布局宽度和布局高度属性。 i have added in the all items. 我已经添加了所有项目。

Please use the below code. 请使用以下代码。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:weightSum="8"
    android:layout_width="fill_parent"
    android:layout_height="75dp">

   <TextView android:id="@+id/priceText"
        android:layout_weight="2"
        android:layout_height="fill_parent"
        android:gravity="center_vertical"
        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:textStyle="bold"
        android:textSize="22dp"
        android:layout_width="wrap_content"

        android:textColor="#000000"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="5dp" 
        android:layout_marginLeft="5dp" />

   <LinearLayout
        android:layout_weight="5"
        android:layout_height="fill_parent"
        android:weightSum="2" 
        android:layout_width="wrap_content"
        android:orientation="vertical">

       <TextView android:id="@+id/storeText"
            android:layout_width="fill_parent"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:gravity="right|bottom"
            android:textStyle="bold"
            android:textSize="22dp"

            android:textColor="#000000"
            android:layout_marginTop="5dp"
            android:layout_marginBottom="5dp" />

       <TextView android:id="@+id/distanceText"
            android:layout_width="fill_parent"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:gravity="right|top"
            android:textSize="16dp"
            android:textColor="#545454"
            android:layout_marginTop="5dp"
            android:layout_marginBottom="5dp" />

   </LinearLayout>

   <TextView
       android:layout_height="fill_parent"
       android:layout_alignParentBottom="true"
       android:layout_alignParentTop="true"
       android:layout_marginBottom="5dp"
       android:layout_marginTop="5dp"
       android:layout_weight="1"
       android:gravity="right|center_vertical"
       android:text=">"
        android:layout_width="fill_parent"

       android:textColor="#000000"
       android:textSize="36dp"
       android:textStyle="bold" 
       android:layout_marginRight="5dp" />

</LinearLayout> 

I don't know exactly what you want to achieve here by this layout but there are few mistake in your xml. 我不完全知道您想通过这种布局在这里实现什么,但是xml中几乎没有错误。

  1. At various places width and height are missing. 在各个地方都缺少宽度和高度。 Consider adding those. 考虑添加这些。

  2. You are adding LinearLayout as parent tag but using RelativeLayout Tags like 您正在将LinearLayout添加为父标签,但使用的是RelativeLayout标签,例如

    android:layout_alignParentBottom="true" android:layout_alignParentTop="true" android:layout_alignParentBottom =“ true” android:layout_alignParentTop =“ true”

    do consider removing those. 请考虑删除这些内容。

  3. Use properly combination of android:layout_weight="" and android:layout_height="" , android:layout_width="" 正确使用android:layout_weight=""android:layout_height="" , android:layout_width=""

Comment if any clarification or help required 评论是否需要任何澄清或帮助

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM