我们经常会遇到需要动态增加删除view的情况,
通常使用
addView(addView);
方法来动态增加view,但是有个问题,这个方法会将新增的view默认加到布局界面的末尾,
也就是屏幕的最下方。
但是我们可能需要加载到顶端,或者不是最下方的位置,那么怎么实现呢?
大家可以把自己的想法写到留言区互相交流。
我这里想到一个很简单的实现方法,就是在布局文件中你希望动态新增的view的地方写一个空的布局,
假如这个空布局的id是add_test_layout
那么我们在动态新增删除view的时候,直接对这个add_test_layout布局进行操作即可
代码如下:
布局文件:
<android.support.v7.widget.Toolbar android:id="@+id/me_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/app_name" android:textSize="20sp" android:layout_gravity="center" android:textColor="@android:color/white"/> <ImageView android:id="@+id/action_camera" android:src="@drawable/ic_action_camera" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="left" /> </android.support.v7.widget.Toolbar> <LinearLayout android:id="@+id/add_test_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> </LinearLayout> <android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#F0F1F6"/>
java代码:
//增加view private void showTestView() { if (null == hiddenView) { LinearLayout myLayout = findViewById(R.id.add_test_layout); View addView = getLayoutInflater().inflate(R.layout.new_view_layout, myLayout, false); overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); myLayout.addView(addView); } } //隐藏view private void hidenTestView() { hiddenView = findViewById(R.id.new_view); if (null != hiddenView) { ViewGroup parent = (ViewGroup) hiddenView.getParent(); parent.removeView(hiddenView); hiddenView=null; } }欢迎大家留言交流