Android任意指定位置动态增删View

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

猜你喜欢

转载自blog.csdn.net/u012449548/article/details/80725118