您的位置:首页 > 移动开发 > Android开发

Android动态设置view的大小及其位置

2016-12-19 15:50 489 查看

动态设置view的大小及其位置

需求就不说了,下面贴代码:

MainActivity

主要就是对view的操作,例如:

public class MainActivity extends Activity implements OnClickListener {

private Button btn;
private ImageView iv;
private LinearLayout ll_group;
public boolean isFullScreen = true;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();

}

private void initView() {
btn = (Button) findViewById(R.id.btn);
iv = (ImageView) findViewById(R.id.iv);
ll_group = (LinearLayout) findViewById(R.id.ll_group);

btn.setOnClickListener(this);
}

@Override
public void onClick(View v) {

if (isFullScreen) { // 全屏转半屏
setViewSize(iv);
isFullScreen = false;
} else {
isFullScreen = true;
setViewFullScreen(iv);

}

}

/**
* 设置view的大小
*
* @param iv2
*/
private void setViewFullScreen(ImageView view) {
MarginLayoutParams margin = new MarginLayoutParams(view.getLayoutParams());
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(margin);
layoutParams.width = 1000 ;
layoutParams.height = 800 ;
view.setLayoutParams(layoutParams);
}

/**
* 自定义设置位置及其大小
*
* @param iv2
*/
private void setViewSize(ImageView view) {
MarginLayoutParams margin = new MarginLayoutParams(view.getLayoutParams());
int dpTop = dp2px( 10);
int dpRight = dp2px( 10);
int dpLeft=dp2px( 10);

margin.setMargins(dpLeft, dpTop, dpRight, 0);

DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(margin);
layoutParams.width = 500;
layoutParams.height= 400;
view.setLayoutParams(layoutParams);
}
public  int dp2px(float dpValue){
final float scale=MainActivity.this.getResources().getDisplayMetrics().density;

return (int)(dpValue*scale+0.5f);
}
}


xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<LinearLayout
android:id="@+id/ll_group"
android:layout_height="400dp"
android:layout_width="match_parent"
android:orientation="vertical" >

<ImageView
android:id="@+id/iv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/aa" />
</LinearLayout>

<Button
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:text="button" />

</LinearLayout>


注意事项

动态变化的view设置宽高属性时,指向的引用类型,应该是该view的父控件。否则将会报:

java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams
cannot be cast to android.widget.LinearLayout$LayoutParams


MarginLayoutParams margin = new MarginLayoutParams(view.getLayoutParams());
/**
*在xml中,view的父控件是LinearLayout这里要LinearLayout.LayoutParams.
*/
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(margin);
layoutParams.width = 1000 ;
layoutParams.height = 800 ;
view.setLayoutParams(layoutParams);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  view动态-位置