相对布局以上定位不起作用

时间:2015-08-24 09:51:36

标签: android android-layout android-relativelayout

我有一个简单的相对布局的问题。绿色TextView(id = subtitle)在运行时消失。为什么呢?

修改 只有当我在ListView中使用这个布局时才会出现问题!!!

aaa.xml:     

    <ImageView
        android:id="@+id/image"
        android:layout_width="120dp"
        android:layout_height="120dp"
        android:layout_alignParentLeft="true"
        android:src="@drawable/ic_launcher"
        />

    <TextView
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/image"
        android:maxLines="2"
        android:minLines="1"
        android:ellipsize="end"
        android:gravity="center_vertical|right"
        android:text="Title"
        android:background="#ff0000"
        />

    <TextView
        android:id="@+id/subtitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/image"
        android:layout_above="@+id/subsubtitle"
        android:lines="1"
        android:ellipsize="end"
        android:gravity="center_vertical|right"
        android:text="Subtitle"
        android:background="#00ff00"
        />

    <TextView
        android:id="@+id/subsubtitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_toRightOf="@+id/image"
        android:lines="1"
        android:ellipsize="end"
        android:gravity="center_vertical|right"
        android:text="SubSubtitle"
        android:background="#0000ff"
        />

</RelativeLayout>

ListView适配器:

public class AdsAdapter extends BaseAdapter {

    Context mContext;

    List<...> mArray;

    public AdsAdapter(Context context) {
        mContext= context;
        mArray= new ArrayList<>();
    }

    public void setData(List<...> data) {
        this.mArray = data;
    }

    @Override
    public int getCount() {
        return mArray.size();
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        return getViewGroup(convertView);
    }

    public ViewGroup getViewGroup(View reuse)
    {
        if(reuse instanceof ViewGroup)
            return (ViewGroup)reuse;

        LayoutInflater inflater = LayoutInflater.from(mContext);
        ViewGroup item = (ViewGroup)inflater.inflate(R.layout.aaa, null);

        return item;
    }
}

enter image description here

2 个答案:

答案 0 :(得分:0)

我没有尝试过您的代码,但我的应用程序中有相同的布局,我使用下面的结构来获取它。它对我来说很好。

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/image"
        android:layout_width="120dp"
        android:layout_height="120dp"
        android:src="@drawable/andriodicon"
        />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:orientation="vertical"
        android:paddingLeft="5dp" >

        <TextView
            android:id="@+id/title"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:textStyle="bold" />

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/subtitle"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                 />

            <TextView
                android:id="@+id/subsubtitle"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

并且如果我有时间,我会尝试你的代码让你知道。

答案 1 :(得分:0)

我已通过在我的应用程序中添加它来检查您的布局。没有任何问题。显示字幕。只需清理您的项目,刷新它并再次运行。