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);
相关文章推荐
- Android动态设置View的位置和大小
- Android动态设置View的位置和大小
- Android——动态设置TextView CompoundDrawable的大小
- 解决Android当中GridView的Item子控件中有ImageView图片大小不一致问题,动态设置ImageView控件大小
- android动态设置控件的大小和位置
- Android 如何根据设置文字大小动态计算TextView长度、动态设置Relativelayout布局
- android Textview动态设置大小
- Android设置SurfaceView任意大小和任意位置
- 动态设置(viewGroup)布局的位置、大小
- Android 在代码中设置imageview的大小和位置(满足单方向的放大缩小和任意位置的移动)
- Android 如何根据设置文字大小动态计算TextView长度、动态设置Relativelayout布局
- Android 如何根据设置文字大小动态计算TextView长度、动态设置Relativelayout布局
- Android 调整控件位置和大小(以textView为例,并设置字体与背景颜色)
- Android程序中代码动态设置Textview文字的大小解决px转dp的问题
- Android textView 动态设置代码字号大小,支持单位选项 dp,sp or px
- Android textView 动态设置代码字号大小,支持单位选项 dp,sp or px
- Android代码中动态设置图片的大小(自动缩放),位置
- 【转】android:自定义layout动态改变view位置和大小
- Android艺术开发探索学习 之 测量view的宽高 以及 动态设置View的位置
- Android 代码中动态设置字体大小-TextView.SetTextSize()