如何在我的xml中添加两次相同的ID?

时间:2013-11-15 19:53:29

标签: android android-layout android-fragments android-linearlayout

我试图在xml中添加两次相同的id(彼此相邻),但是它一直向我显示错误并且没有按预期工作。(我想将这两个代码块放在每个旁边其他而不是一个在另一个之下,我对android很新,并且对此没有任何线索,任何想法?

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:foo="http://schemas.android.com/apk/res/com.justin.jar"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#004D79"
    >
<RelativeLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="@dimen/news_headline_padding" >

    <com.justin.jar.utils.FontTextView
        android:id="@+id/news_headline_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:maxLines="3"
        android:paddingLeft="@dimen/common_left_padding"
        android:paddingRight="5dp"
        android:textSize="16sp" 
        foo:customFont="cabin.medium.ttf"
        android:textColor="@color/search_autosuggest_header_text"
        android:layout_toRightOf="@id/news_headline_image" />

    <com.justin.jar.utils.FontTextView
        android:id="@+id/metadata"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="@color/search_autosuggest_item_subtitle"
        android:textSize="12sp" 
        android:paddingLeft="@dimen/common_left_padding"
        android:paddingRight="5dp"
        android:layout_alignLeft="@id/news_headline_text"
        android:layout_toRightOf="@id/news_headline_image"
        android:layout_below="@id/news_headline_text" 
        />


    <ImageView
        android:id="@+id/news_headline_image"
        android:layout_width="107dp"
        android:layout_height="80dp"
        android:background="@drawable/container_dropshadow"
        android:paddingLeft="1dp"
        android:paddingRight="1dp"
        android:paddingTop="1dp"
        android:paddingBottom="1dp"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="@dimen/common_left_padding"
        android:contentDescription="@string/headline_image" 
        />
</RelativeLayout>
<RelativeLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="@dimen/news_headline_padding" >

    <com.justin.jar.utils.FontTextView
        android:id="@+id/news_headline_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:maxLines="3"
        android:paddingLeft="@dimen/common_left_padding"
        android:paddingRight="5dp"
        android:textSize="16sp" 
        foo:customFont="cabin.medium.ttf"
        android:textColor="@color/search_autosuggest_header_text"
        android:layout_toRightOf="@id/news_headline_image" />

    <com.justin.jar.utils.FontTextView
        android:id="@+id/metadata"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="@color/search_autosuggest_item_subtitle"
        android:textSize="12sp" 
        android:paddingLeft="@dimen/common_left_padding"
        android:paddingRight="5dp"
        android:layout_alignLeft="@id/news_headline_text"
        android:layout_toRightOf="@id/news_headline_image"
        android:layout_below="@id/news_headline_text" 
        />


    <ImageView
        android:id="@+id/news_headline_image"
        android:layout_width="107dp"
        android:layout_height="80dp"
        android:background="@drawable/container_dropshadow"
        android:paddingLeft="1dp"
        android:paddingRight="1dp"
        android:paddingTop="1dp"
        android:paddingBottom="1dp"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="@dimen/common_left_padding"
        android:contentDescription="@string/headline_image" 
        />
</RelativeLayout>
</FrameLayout>

这是我想要的一个例子 http://i.stack.imgur.com/TgfZl.png

[1]:

3 个答案:

答案 0 :(得分:2)

From the Docs

  

ID

     

任何View对象都可以具有与之关联的整数ID,以便唯一   识别树中的视图。

更改一个id。例如

<com.justin.jar.utils.FontTextView
android:id="@+id/news_headline_text_right"

我相信,您可以在不同的View文件中使用id resource findViewById(),但我认为这不是一个好主意。但是在树中它们必须是唯一的,否则当您尝试使用{{1}}

来尝试访问时,Android将无法知道使用哪一个

答案 1 :(得分:0)

ID 无法在一个XML文档中多次使用。它们必须是独一无二的。

答案 2 :(得分:0)

ID proprety必须是项目中每个对象的唯一属性。因此,如果您使用相同的ID创建两个或更多对象,则不会生成任何错误,但编译器将使用他遇到的第一个。为什么你还需要这个呢?