动态设置Layout的宽高值

来源:互联网 发布:p2p理财返利平台源码 编辑:程序博客网 时间:2024/05/29 18:37

项目中使用的布局文件test_layout.xml如下:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:background="@drawable/popup_window"    android:gravity="left"    android:orientation="vertical">    <LinearLayout        android:id="@+id/llTest"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:gravity="left"        android:orientation="horizontal">        <ImageView            android:id="@+id/ivTest"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center"            android:src="@android:drawable/ic_input_add" />        <TextView            android:id="@+id/tvTest"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center"            android:text="展开"            android:textColor="@color/black"            android:textSize="14sp" />    </LinearLayout>    <View        android:id="@+id/devider1"        android:layout_width="fill_parent"        android:layout_height="1px"        android:layout_below="@id/llTest"        android:visibility="gone"        android:background="@color/gray" />    <LinearLayout        android:id="@+id/llExpand"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@id/devider1"        android:layout_marginTop="-4dp"        android:orientation="vertical"        android:visibility="gone">        <LinearLayout            android:id="@+id/llExpandItem1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:orientation="horizontal"            android:layout_below="@id/devider1">            <ImageView                android:id="@+id/ivExpandItem1"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_gravity="center"                android:src="@android:drawable/presence_online"                android:visibility="invisible"/>            <TextView                android:id="@+id/tvExpandItem1"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_gravity="center"                android:layout_marginLeft="10dp"                android:text="扩展条目1"                android:textColor="@color/black"                android:textSize="14sp" />        </LinearLayout>        <View            android:id="@+id/devider2"            android:layout_width="fill_parent"            android:layout_height="1px"            android:layout_below="@id/llExpandItem1"            android:visibility="gone"            android:background="@color/gray" />        <LinearLayout            android:id="@+id/llExpandItem2"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:orientation="horizontal"            android:layout_below="@+id/devider1">            <ImageView                android:id="@+id/ivExpandItem2"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_gravity="center"                android:gravity="center"                android:src="@android:drawable/presence_online"                android:visibility="invisible"/>            <TextView                android:id="@+id/tvExpandItem2"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_gravity="center"                android:layout_marginLeft="10dp"                android:text="扩展条目2"                android:textColor="@color/black"                android:textSize="14sp" />        </LinearLayout>    </LinearLayout></RelativeLayout>

为了保证展开的Layout布局的宽度与父布局一致,可以采用以下方式实现:

//获取布局中的各个元素View contentView = View.inflate(this, R.layout.test_layout, null);View mllTest = contentView.findViewById(R.id.llTest);View mllExpand = contentView.findViewById(R.id.llExpand);View mTvllExpandItem1 = contentView.findViewById(R.id.llExpandItem1);View mTvllExpandItem2 = contentView.findViewById(R.id.llExpandItem2);PopupWindow mPopupWindow = new PopupWindow(contentView);mPopupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);mPopupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);mPopupWindow.setOutsideTouchable(true);mPopupWindow.setBackgroundDrawable(new BitmapDrawable());

然后采用如下方式获取PopupWindow的宽度值,并利用LayoutParam进行设置。

//由于mllExpand的parent layout是RelativeLayout,因此需要采用RelativeLayout.LayoutParams类型RelativeLayout.LayoutParams lpExpand = (RelativeLayout.LayoutParams)mllExpand .getLayoutParams();//获取popup window的宽度需要先获取content view,然后再获取宽度lpExpand.width = mPopupWindow.getContentView().getMeasuredWidth();lpExpand.setLayoutParams(lpResChoose);

采用这种方式能够动态设置布局或者控件的宽高值。

0 0
原创粉丝点击