其实在android中,并没有include的相关类。虽然include可以看做是一个View,但在java代码中并不能直接对其的属性layout进行设置。如果要想动态地改变include里面的内容,其实可以通过另外一种方式。
在<LinearLayout>中写入多个include,并设置每个include的id。在代码中将include看做是一个View,并设置其的visibility属性值。注意的是,如果设置某个include不可见,只能使用visibility(View.GONE),不能使用visibility(View.invisibility),他们两者是不同的。View.invisibility只是设置改控件不可见,但在布局文件中的位置还存在,View.GONE不仅控件不可见,而且在布局中的位置会被其后面的控件所替代。
关键代码如下:
<LinearLayout
android:id="@+id/energy_content"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="7dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginBottom="15dp"
android:orientation="vertical"
android:layout_weight="7">
<include
android:id="@+id/include_changeOne"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="visible"
layout="@layout/change_one"/>
<include
android:id="@+id/include_histogram"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="visible"
layout="@layout/histogram"/>
<include
android:id="@+id/include_stick"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="visible"
layout="@layout/stick"/>
</LinearLayout>
View include_changeOne,include_histogram,include_stick;
include_changeOne = findViewById(R.id.include_changeOne);
include_histogram = findViewById(R.id.include_histogram);
include_stick = findViewById(R.id.include_stick);
if(v==indexOne) {
include_changeOne.setVisibility(View.VISIBLE);
}
if(v==indexTwo) {
include_changeOne.setVisibility(View.GONE);
include_histogram.setVisibility(View.VISIBLE);
//include_stick.setVisibility(1);
}
if(v==indexThree){
include_changeOne.setVisibility(View.GONE);
include_histogram.setVisibility(View.GONE);
include_stick.setVisibility(View.VISIBLE);
}