我添加了一个由LayoutInflater扩展到布局中的视图,然后更改了该视图的背景颜色,例如,从红色更改为蓝色.所有这些之后,我添加了一个由相同xml文件填充的新视图.布局,但我看到的背景颜色为蓝色,而不是原始颜色为红色.
这是测试代码:
public class InflateActivity extends Activity{
private LinearLayout mContainer;
private View view;
@Override
protected void onCreate(Bundle saveInstanceState) {
super.onCreate(saveInstanceState);
setContentView(R.layout.inflate_test);
mContainer = (LinearLayout)findViewById(R.id.inflate_container);
findViewById(R.id.add).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
view = LayoutInflater.from(InflateActivity.this).inflate(R.layout.expanded_record,mContainer,false);
mContainer.addView(view,2);
}
});
findViewById(R.id.change_color).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
view.setBackgroundColor(Color.BLUE);
}
});
}
}
我通过view.toString()获得了不同的ID.
我不知道为什么.
我想知道为什么我要对视图A进行一些更改,而用相同的xml文件填充且未更改的视图B会受到这些更改的影响.
实际上,我对视图A进行了许多更改,但是只有setBackgroundColor()会影响视图B.
xml文件的根视图是一个FrameLayout.其他布局如LinearLayout,RelativeLayout不会出现问题
解决方法:
我通过创建一个项目检查了您的代码.我正在使用Android Studio.我没有发现您提到的任何问题.请看一下我的代码,并尝试相应地更改您的代码.
主要活动:
public class MainActivity extends Activity {
private LinearLayout mContainer;
private View view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContainer = (LinearLayout)findViewById(R.id.inflate_container);
findViewById(R.id.add).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
view = LayoutInflater.from(MainActivity.this).inflate(R.layout.expanded_record,mContainer,false);
mContainer.addView(view,mContainer.getChildCount());
}
});
findViewById(R.id.change_color).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
view.setBackgroundColor(Color.BLUE);
}
});
}
主要XML:
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
android:id="@+id/inflate_container"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_margin="20dp">
android:text="add" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/add"
android:clickable="true"/>
android:id="@+id/change_color"
android:clickable="true"
android:text="change_color" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
以及我要夸大的XML
android:layout_width="fill_parent"
android:layout_height="10dp"
android:background="#000000"
android:layout_gravity="center">
这是我得到的结果
看到我可以添加黑色视图并将其更改为蓝色,然后再更改为黑色
标签:android
来源: https://codeday.me/bug/20191120/2044517.html