结合两个简单的android:id或(R.id)

时间:2012-12-01 01:27:57

标签: android android-layout

Fristly我对android很新,我有两个android:id。

例如:[R.id.custom_font]和[R.id.product_name]

在.java文件中

 TextView tv = (TextView)findViewById(R.id.custom_font);
Typeface cFont = Typeface.createFromAsset(getAssets(), "fonts/jcc.ttf");
tv.setTypeface(cFont);


adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.product_name,  R.id.custom_font, products);
lv.setAdapter(adapter);

当我将它们放在一个文本视图中时,它会显示一条错误消息[属性“android:id”已经为元素“TextView”指定了]

在.xml文件中

    <TextView

    android:textColor="?android:textColorPrimary"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/custom_font"
    android:id="@+id/product_name" //Attribute "android:id" was already specified for element "TextView"
    android:textSize="15sp" />

如何在单个文本视图中传递两个android:id?

或者任何人如果能帮助我Download This

提前致谢。

2 个答案:

答案 0 :(得分:1)

您只能将一个ID设置为UI小部件。删除其中一个Id。您可以为ArrayAdapter使用相同的Id。

答案 1 :(得分:0)

与Ahmad完全相同的答案,但根据评论,你似乎没有得到它,所以改变你的XML(删除给出错误的行):

<TextView
android:textColor="?android:textColorPrimary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/custom_font"
android:textSize="15sp" />

然后像这样更改Java代码:

TextView tv = (TextView)findViewById(R.id.custom_font);
Typeface cFont = Typeface.createFromAsset(getAssets(), "fonts/jcc.ttf");
tv.setTypeface(cFont);


adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.custom_font,  R.id.custom_font, products);
lv.setAdapter(adapter);

如果您的问题出现在ArrayAdapter的构造函数的两个参数上,这些参数会困扰您,请尝试这样...

像这样更改XML:

<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/product_name">

<TextView
android:textColor="?android:textColorPrimary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/custom_font"
android:textSize="15sp" />

</FrameLayout>

然后你可以保留与你拥有的相同的Java代码......

如果仍然无法解决问题,我真的很困惑你的问题是什么。