我们经常会遇到需要动态增加删除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;
}
}
欢迎大家留言交流