2012-07-03 160 views
1

我创建了一个布局,我包括它里面的机器人布局:如何访问android xml布局文件中的包含视图中的元素?

<include 
    layout="@android:layout/simple_list_item_multiple_choice" /> 

一旦我的整个观点是夸大我怎么能访问simple_list_item_multiple_choice里面的元素?我想有一个TextView和CheckBox,我应该可以使用,但他们的ID是什么?

编辑: 我需要膨胀不止一件事吗?

回答

2

您可以访问它这样做:

CheckedTextView ctv = (CheckedTextView)findViewById(android.R.id.text1); 
+0

这非常奇怪,因为android.R.id包含Android操作系统用来引用各种默认项目的所有公共可用的id。每个Android应用程序都应该可以访问它。 –

1

这是Android的SDK为simple_list_item_multiple_choice代码:

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    android:layout_width="match_parent" 
    android:layout_height="?android:attr/listPreferredItemHeight" 
    android:textAppearance="?android:attr/textAppearanceListItem" 
    android:gravity="center_vertical" 
    android:checkMark="?android:attr/listChoiceIndicatorMultiple" 
    android:paddingLeft="8dip" 
    android:paddingRight="8dip" 
/> 

我想你可以从这里处理。

2

我通过提供@+id<include/>语句完成这样的任务。因此,对于像你上面的例子我会写......

<include 
    android:id="@+id/listItemMultiChoiceWrapper" 
    layout="@android:layout/simple_list_item_multiple_choice" /> 

您可以然后在您的活动写/片段级访问的text1场(在任何你设置包含<include/>视图)

final CheckedTextView ctv = (CheckedTextView) findViewById(id.listItemMultiChoiceWrapper).findViewById(id.text1); 

如果这样做不起作用,那么检查重复的id是否会混淆这种情况(Lint也应该选择这些)。

相关问题