Atr*_*rus 3 layout android views
所以,我有一个很好的小视图,我已经制作了,它基本上显示了两个带有一些状态标签的按钮.没有什么太复杂的.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:gravity="center"
android:orientation="vertical">
<LinearLayout android:orientation="horizontal"
android:layout_width="wrap_content" android:layout_height="wrap_content">
<ToggleButton android:text="ToggleButton" android:id="@+id/toggleButton1"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/on_off">
</ToggleButton>
<TextView android:text="TextView" android:id="@+id/textView1"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_marginLeft="20px" android:layout_marginRight="20px"
android:layout_marginTop="3dp" android:layout_marginBottom="3dp">
</TextView>
<ImageButton android:src="@drawable/preferences"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:id="@+id/imageButton2" android:background="@android:color/transparent">
</ImageButton>
</LinearLayout>
<LinearLayout android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:id="@+id/view_monday" android:textSize="10dp" android:layout_marginRight="3dp"
android:layout_height="wrap_content" android:layout_width="wrap_content" android:textColor="#2F4F4F"
android:text="@string/monday_short"></TextView>
<TextView android:id="@+id/view_tuesday" android:textSize="10dp" android:layout_marginRight="3dp"
android:layout_height="wrap_content" android:layout_width="wrap_content" android:textColor="#2F4F4F"
android:text="@string/tuesday_short"></TextView>
<TextView android:id="@+id/view_wednesday" android:textSize="10dp" android:layout_marginRight="3dp"
android:layout_height="wrap_content" android:layout_width="wrap_content" android:textColor="#2F4F4F"
android:text="@string/wednesday_short"></TextView>
<TextView android:id="@+id/view_thursday" android:textSize="10dp" android:layout_marginRight="3dp"
android:layout_height="wrap_content" android:layout_width="wrap_content" android:textColor="#2F4F4F"
android:text="@string/thursday_short"></TextView>
<TextView android:id="@+id/view_friday" android:textSize="10dp" android:layout_marginRight="3dp"
android:layout_height="wrap_content" android:layout_width="wrap_content" android:textColor="#2F4F4F"
android:text="@string/friday_short"></TextView>
<TextView android:id="@+id/view_saturday" android:textSize="10dp" android:layout_marginRight="3dp"
android:layout_height="wrap_content" android:layout_width="wrap_content" android:textColor="#2F4F4F"
android:text="@string/saturday_short"></TextView>
<TextView android:id="@+id/view_sunday" android:textSize="10dp" android:layout_marginRight="3dp"
android:layout_height="wrap_content" android:layout_width="wrap_content" android:textColor="#2F4F4F"
android:text="@string/sunday_short"></TextView>
</LinearLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我想用以下代码将它添加到我的主要活动中:
LinearLayout root = (LinearLayout)findViewById(R.id.alarms);
View newView = View.inflate(this, R.layout.alarm, null);
alarms.add(newView);
Run Code Online (Sandbox Code Playgroud)
但是,似乎我不能添加多个,我不知道为什么,或者如何解决这个问题,以便能够添加多个副本.此外,我不知道如何访问单个部分,因为它们都具有相同的ID.
蒂姆,谢谢
您是如何尝试将多个副本添加到"root"LinearLayout的?
如果您只是尝试调用addView(newView)两次,那么您尝试两次添加相同的View对象引用.这是错误的,因为您尝试两次添加相同的View对象引用.我不完全确定执行此操作时定义的行为是什么,但我认为addView()第二次不执行任何操作,因为它检查它是否已经存在引用newView(如果有人能够确认是否正确,将会很感激或者错了).
因此,您需要为您的孩子提供两个单独的实例视图我认为,使用说:
View newView0 = View.inflate(this, R.layout.alarm, null);
View newView1 = View.inflate(this, R.layout.alarm, null);
Run Code Online (Sandbox Code Playgroud)
然后单独添加它们.
我想你通过调用findViewById()实际的子视图来解决重复ID的问题,而不是父视图:
newView0.findViewById( someID )
Run Code Online (Sandbox Code Playgroud)
更新:刚刚为您测试了Eclipse中的代码.我将从XML文件创建的两个子视图添加到LinearLayout,然后将第二个子视图中的一个视图的属性(背景颜色变为蓝色)更改为:
LinearLayout root = new LinearLayout(this);
LinearLayout newView0 = (LinearLayout)View.inflate(this, R.layout.main, null);
LinearLayout newView1 = (LinearLayout)View.inflate(this, R.layout.main, null);
root.addView(newView0);
root.addView(newView1);
setContentView(root);
newView1.findViewById(R.id.view_monday).setBackgroundColor(0xff0000ff);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11046 次 |
| 最近记录: |