Android:xml布局问题

时间:2015-12-31 09:56:09

标签: android xml android-layout

我确定它一定是个小问题,但我无法让它发挥作用。我有一个xml有两列(权重:5& 1,你可以在table.xml中看到)完美的工作。现在,我已经添加了另一个带有标题,并且数据没有被放置在两列中,权重与之前一样,并且它被放在一起,除了工作正常的标题。

我不想放置修正宽度值,所以我喜欢用重量方式解决方案。

以下是我使用的两个xml:

header.xml

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout android:id="@+id/header"
          xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_height="fill_parent"
          android:layout_width="fill_parent">
<!-- Header -->
<LinearLayout android:background="#1d688f"
              android:paddingTop="6dip"
              android:paddingBottom="6dip"
              android:paddingLeft="6dip"
              android:layout_height="wrap_content"
              android:layout_width="fill_parent">

    <TextView 
        android:id="@+id/pid"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:visibility="gone"/>

    <TextView 
        android:id="@+id/paiseur"
        android:layout_width="0dp"
        android:layout_weight="5"
        android:layout_height="wrap_content"
        android:textStyle="bold"
        android:textSize="20sp"
        android:text="@string/pais"/>

    <TextView 
        android:id="@+id/cantidadeur"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:textStyle="bold"
        android:gravity="center"
        android:textSize="20sp"
        android:text="@string/total" />

</LinearLayout>

<!-- List Divider -->
<View android:layout_width="fill_parent"
      android:layout_height="5dip"
      android:background="?android:attr/listDivider" />

<!-- ListView (grid_items) -->
<LinearLayout android:id="@+id/layout"
              android:layout_width="wrap_content"
              android:layout_height="fill_parent"
              android:layout_weight="6">

    <ListView android:id="@android:id/list"
              android:layout_height="fill_parent"
              android:layout_width="0dp"
              android:layout_weight="6">
    </ListView>

</LinearLayout>

</LinearLayout>

列表中的那个,table.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:paddingTop="6dip"
android:paddingBottom="6dip"
android:paddingLeft="6dip"
android:layout_weight="6"
android:layout_width="fill_parent"
android:layout_height="wrap_content">

<TextView
    android:id="@+id/pid"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:visibility="gone"/>

<TextView
    android:id="@+id/paiseur"
    android:layout_width="fill_parent"
    android:layout_weight="5"
    android:layout_height="wrap_content"
    android:textStyle="bold"
    android:textSize="20sp" />

<TextView 
    android:id="@+id/cantidadeur"
    android:layout_width="fill_parent"
    android:layout_weight="1"
    android:layout_height="wrap_content"
    android:textStyle="bold"
    android:gravity="center"
    android:textSize="20sp" />

</LinearLayout>

我试图在table.xml中将宽度更改为paiseseur的220dp,它确实将coulmns分开,但是我希望在标题中有重量。

我添加代码以防它有事可做:

setContentView(R.layout.header);
ListView lv = (ListView) findViewById(android.R.id.list);
SimpleAdapter adapter = new SimpleAdapter(
                        Verpaiseur.this, paisesList,
                        R.layout.table, new String[]{TAG_PID, TAG_PAIS, TAG_TOTAL},
                        new int[]{R.id.pid, R.id.paiseur, R.id.cantidadeur});
lv.setAdapter(adapter);

非常感谢!

3 个答案:

答案 0 :(得分:1)

试试这个。这会对你有所帮助。

<LinearLayout android:id="@+id/layout"
          android:layout_width="wrap_content"
          android:layout_height="0dp"
          android:layout_weight="6">

<ListView android:id="@android:id/list"
          android:layout_height="fill_parent"
          android:layout_width="match_parent">
</ListView>

答案 1 :(得分:0)

在所有使用过重量的地方,你没有将宽度设置为0dp。有时如果错过了这会导致布局中的垃圾输出。尝试在您使用重量的地方将宽度设置为0dp,看看是否能解决您的问题。

你没有这样做的一个例子是:

 <!-- ListView (grid_items) -->
 <LinearLayout android:id="@+id/layout"
 android:layout_width="wrap_content"
 android:layout_height="fill_parent"
 android:layout_weight="6">

检查其他地方是否存在同样的事情。

答案 2 :(得分:0)

尝试这个,因为你没有给出布局方向导致错误, 不使用weightSum您将无法获得正确的解决方案,如果您获得该解决方案,则不适用于所有其他设备

<强> header.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/header"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <!-- Header -->
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#1d688f"
        android:orientation="horizontal"
        android:paddingBottom="6dip"
        android:paddingLeft="6dip"
        android:paddingTop="6dip"
        android:weightSum="7">

        <TextView
            android:id="@+id/pid"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="1"
            android:textSize="20sp"
            android:textStyle="bold"
            android:visibility="visible" />

        <TextView
            android:id="@+id/paiseur"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="5"
            android:text="pais"
            android:textSize="20sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/cantidadeur"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="total"
            android:textSize="20sp"
            android:textStyle="bold" />

    </LinearLayout>

    <!-- List Divider -->
    <View
        android:layout_width="fill_parent"
        android:layout_height="5dip"
        android:background="?android:attr/listDivider" />

    <!-- ListView (grid_items) -->
    <LinearLayout
        android:id="@+id/layout"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="6">

        <ListView
            android:id="@android:id/list"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_weight="6"></ListView>

    </LinearLayout>

</LinearLayout>

<强> table.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/header"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_margin="5dp"
    android:orientation="horizontal"
    android:weightSum="7">

    <TextView
        android:id="@+id/pid"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center"
        android:text="1"
        android:textSize="20sp"
        android:textStyle="bold"
        android:visibility="visible" />

    <TextView
        android:id="@+id/paiseur"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="5"
        android:gravity="center"
        android:text="paiseur"
        android:textSize="20sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/cantidadeur"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center"
        android:text="cantidadeur"
        android:textSize="20sp"
        android:textStyle="bold" />

</LinearLayout>