ListView和布局。为什么ListView重叠一切?

时间:2014-05-04 18:58:30

标签: android android-layout android-listview

这是经过编辑的版本!我是Android应用编程的新手,我认为这很难,不是java而是ui。我想获得一个类别列表。它们可以是listView或其他内容中带有textview的复选框。想法是用户可以按下框/标签/复选框/按钮,多选。我最终得到了复选框,因为它感觉最简单的方法,任何建议如何为最终用户提供最简单的解决方案?用户可以添加自己的类别,因此最后一行就像按钮,用户可以在其中添加新类别。

问题

如何获得这些类别复选框与设置栏,按钮等不重叠的布局? 部分解决:我将framelayout更改为LinearLayout,并将我的启动图像从imageView更改为android:background to layout。现在我可以看到一切,但订单不对。如果我将topframe移到顶部(它应该在哪里),我收到如下错误消息:

错误:    java.lang.ClassCastException:android.widget.LinearLayout无法强制转换为android.widget.Button

ACTIVITY.xml     

<LinearLayout
    android:id="@+id/buttonContainer"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="bottom"
    android:orientation="vertical" >

    <Button
        android:id="@+id/category"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:layout_marginBottom="5dp"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"
        android:background="@drawable/white_button"
        android:minHeight="40dp"
        android:text="@string/category"
        android:textColor="#ffffff"
        android:textStyle="bold" />

    <Button
        android:id="@+id/tak"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"
        android:background="@drawable/white_button"
        android:minHeight="40dp"
        android:text="@string/take"
        android:textColor="#ffffff"
        android:textStyle="bold" />

    <Button
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:layout_marginBottom="5dp"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"
        android:background="@drawable/white_button"
        android:minHeight="40dp"
        android:text="@string/list"
        android:textColor="#ffffff"
        android:textStyle="bold" />
</LinearLayout>

<LinearLayout
    android:id="@+id/topframe"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#99a8b3b9" >

    <Button
        android:id="@+id/settings_button"
        android:layout_width="43dp"
        android:layout_height="37dp"
        android:background="@drawable/ic_sysbar_quicksettings" />

    <TextView
        android:id="@+id/top_category"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30dp"
        android:text="@string/no_category_text"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#FFFFFF" />
</LinearLayout>

  

enter image description here

1 个答案:

答案 0 :(得分:1)

不要使用FrameLayout来构建这样的UI。 FrameLayout将所有子项放在左上角,这就是您的视图重叠的原因。我所看到的具有垂直方向的LinearLayout应该可以胜任。

例如使用这样的一个:

<LinearLayout
    ...
    android:orientation="vertical">

    ...

    <LinearLayout
        android:id="@+id/topframe"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#99a8b3b9" >

        <Button
            android:id="@+id/settings_button"
            android:layout_width="43dp"
            android:layout_height="37dp"
            android:background="@drawable/ic_sysbar_quicksettings" />

        <TextView
            android:id="@+id/top_category"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:text="@string/no_category_text"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#FFFFFF" />
    </LinearLayout>

    <ListView
        android:id="@+id/listView1"
        android:layout_width="fill_parent"
        android:layout_height="377dp" >
    </ListView>

    ...

</LinearLayout>