Kewei
首页·Home
留言·Message
关于·About
搜索
动态加载layout
2018年07月25日 08:06:26
1396
0
0
文章分类:
Android
## 动态加载布局,margin属性无效 有时候我们写好了一个布局文件的模板,然后在代码里面利用LayoutInflate进行动态加载的时候,我们会发现模板里面原来写好的margin的一些参数全都不起作用,下面举一个例子,比如说我的模板文件如下 ``` <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="40dp" android:layout_marginStart="20dp" android:layout_marginEnd="20dp" android:layout_marginTop="10dp" android:background="@drawable/item_unselected"> <TextView android:id="@+id/reminder_entity_content" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentStart="true" android:layout_marginStart="@dimen/activity_horizontal_margin" android:text="Bring Utensil" android:textColor="@color/text_black_high" android:textSize="@dimen/shortcut_detail_text_size_small" android:gravity="center_vertical"/> <ImageView android:id="@+id/reminder_action_where" android:layout_width="@dimen/medium_icon_size" android:layout_height="@dimen/medium_icon_size" android:layout_marginEnd="@dimen/activity_horizontal_margin" android:padding="5dp" android:layout_alignParentEnd="true" android:scaleType="fitCenter" android:src="@drawable/location_black" android:visibility="gone"/> </RelativeLayout> ``` 就是很简单的一个Relativelayout包住了一个TextView和一个Imageview,然后重点在于Relativelayout我设置了marginStart/End/Top三个margin相关的属性。在MainActivity里面动态加载这个布局文件 ``` public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); LinearLayout layout = findViewById(R.id.container); for (int i = 0; i < 5; i++){ RelativeLayout entity = (RelativeLayout) this.getLayoutInflater().inflate(R.layout.reminder_entity_template, null); layout.addView(entity); } } } ``` 什么鬼?这是什么效果??  查阅资料后发现,原来在加载这个布局的时候只有指定了其父布局,他的margin属性才会生效 将原来的这行代码 `RelativeLayout entity = (RelativeLayout) this.getLayoutInflater().inflate(R.layout.reminder_entity_template, null);` 改为 `RelativeLayout entity = (RelativeLayout) this.getLayoutInflater().inflate(R.layout.reminder_entity_template, layout, false);` 然后再试一次,大功告成! 
点赞
0
分享