0

我有一个自定义 ListActivity,其中我有一个自定义 ListAdapter,它为列表中的每个项目扩展布局。在 Eclipse 中,在可视化编辑器中,布局看起来像这样 Eclipse 的布局

这是由以下代码完成的:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/largeFrame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <RelativeLayout
        android:id="@+id/RelativeLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="1dp"
        android:layout_marginRight="3dp"
        android:layout_marginTop="5dp"
        android:background="@color/mainBack"
        android:orientation="vertical" >


        <View
            android:id="@+id/imageView1"
            android:layout_width="5dp"
            android:layout_height="fill_parent"
            android:layout_alignParentLeft="false"
            android:layout_alignParentTop="false"
            android:layout_marginLeft="2dp"
            android:background="@android:color/darker_gray" />

        <TextView
            android:id="@+id/newtimeslot_class"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="4dp"
            android:layout_marginTop="10dp"
            android:layout_toRightOf="@+id/imageView1"
            android:text="Large Text"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textColor="@android:color/black" />

        <View
            android:id="@+id/imageView2"
            android:layout_width="wrap_content"
            android:layout_height="2dp"
            android:layout_alignRight="@+id/newtimeslot_class"
            android:layout_below="@+id/newtimeslot_class"
            android:layout_toRightOf="@+id/imageView1"
            android:background="@android:color/darker_gray" />

        <TextView
            android:id="@+id/newtimeslot_time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/newtimeslot_class"
            android:layout_alignParentRight="true"
            android:layout_marginRight="5dp"
            android:text="Medium Text"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#646464" />

        <TextView
            android:id="@+id/newtimeslot_location"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/imageView2"
            android:layout_marginRight="5dp"
            android:text="Medium Text"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#646464" />

        <TextView
            android:id="@+id/newtimeslot_comment"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/newtimeslot_location"
            android:layout_marginBottom="10dp"
            android:layout_marginRight="5dp"
            android:layout_marginTop="2dp"
            android:text="Medium Text"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#646464" />
    </RelativeLayout>

</FrameLayout>

不幸的是,当我在安卓设备上运行它时,左边的行完全消失了。相反,它看起来像

在此处输入图像描述

我刚刚在膨胀它方面做了通常的事情,我只访问过 TextView 对象。所以我只是想知道可能会发生什么,如果有人可以帮助我摆脱这个烂摊子?

干杯

编辑:通货膨胀代码

@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
    final View view = mInflater.inflate(R.layout.timeslotlayout_new, parent, false);

    return view;
}
4

2 回答 2

1

我怀疑引用@android:color/darker_gray是问题所在。

可能在某些设备上,这个值不存在?!?(例如,它可能使用另一个名称)

尝试将背景属性设置为 COLOR(而不是 android 颜色参考),如#00000代表黑色(或为DarkGray选择另一种自定义颜色,如# A9A9A9):

android:background="#A9A9A9"

/或者/

为大多数基本颜色创建一个 XML 文件,如 done HERE,通过这种方式,您可以确保颜色不会在设备之间发生变化,最重要的是,它们将存在于您的应用程序的所有设备上。

因此,如果您这样做(请参阅链接),您可以创建这样的颜色(XML 文件的名称根本不重要):

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="Black">#000000</color>
   <color name="DarkGray">#A9A9A9</color>
</resources>

并以下列方式引用它:

android:background="@color/DarkGray"

注意:无论这是否解决了您的问题,我强烈建议您遵循这种方式以确保安全。

于 2013-01-16T12:04:45.603 回答
0

也许你错过了设置这个:

android:layout_alignParentLeft="false"

对此:

android:layout_alignParentLeft="true"

而且,顺便说一句,android:orientation="vertical"不适用于相对布局。它仅适用于LinearLayout.

newtimeslot_time TextView改变

android:layout_toRightOf="@+id/imageView1"

android:layout_toRightOf="@id/imageView1"

希望能帮助到你!

干杯!

于 2013-01-16T09:16:20.553 回答