我們經常會遇到需要動态增加删除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;
}
}
歡迎大家留言交流