天天看點

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;
        }
    }
           

歡迎大家留言交流