1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > android 自定义view 高度 自定义View之宽高的设置 全网最详解

android 自定义view 高度 自定义View之宽高的设置 全网最详解

时间:2023-09-20 03:46:23

相关推荐

android 自定义view 高度 自定义View之宽高的设置 全网最详解

今天给大家带来的是自定义View,然后如何设置他的宽高,经常用自定义view的程序猿肯定都知道我们在给自定义view设置wrap_content或者match_parent,view都会占满全屏,就想如下

以下是方法,不提供自定义view的布局了,很简单,就是绘一个蓝色的圆

第一种方式(布局修改)

第一种方法也是最简单的方法,我们直接给自定义view限制一个宽高

xmlns:app="/apk/res-auto"

xmlns:tools="/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

tools:context="com.example.administrator.ceshi.MainActivity">

android:layout_width="200dp"

android:layout_height="200dp"

android:background="@color/colorAccent"/>

效果如下

第二种方式(动态添加view修改宽高)

随着我们的技术不断提升,自定义view应用的场所也越来越多,如果我们动态的去添加自定义View呢,就无法限制布局的宽高了,所以我们接下来讲解的是第二种用法

为了显示效果主布局我们什么都不写

activity_main

xmlns:app="/apk/res-auto"

xmlns:tools="/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

tools:context="com.example.administrator.ceshi.MainActivity"

android:id="@+id/rl">

MainActivity

普通的动态添加view是这样的

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

rl = (RelativeLayout) findViewById(R.id.rl);

MyView my=new MyView(this);

my.setBackgroundColor(getResources().getColor(R.color.colorAccent));

rl.addView(my);

}

效果如下

我们只需要在myview再添加一个宽高的RelativeLayout布局即可

方法如下

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

rl = (RelativeLayout) findViewById(R.id.rl);

RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams(200,200);

MyView my=new MyView(this);

my.setBackgroundColor(getResources().getColor(R.color.colorAccent));

my.setLayoutParams(params);

rl.addView(my);

}

效果

为什么和第一种有区别呢?原因很简单,他们的单位不一样,new RelativeLayout.LayoutParams(200,200);一个是像素单位,一个是dp单位

我们把这里的200全部改成400就和上面的一模一样了

其实第二种方法应用的场景还是特别多的

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。