我已经成功制作了一个自定义PinView类。 现在的问题是我想根据XML中指定的PinView大小来设置Pin View按钮的大小。像按钮一样,PinView的宽度和高度为5%。
当前,我通过执行以下操作来设置PinView的高度和宽度groups
返回80%的屏幕高度和70%的屏幕宽度
getPinPadHeight()
但是现在的问题是,当我在这样的主要活动XML文件中使用此自定义PinView视图时。
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
pinView.getLayoutParams().height = ViewUtil.getPinPadHeight();
pinView.getLayoutParams().width = ViewUtil.getPinPadWidth();
}
并且我想更改其高度和宽度,而不更改其始终根据屏幕高度和宽度百分比设置的方式,如何使该视图像某些库一样,以便我可以根据自己的喜好以及其内部的视图自动设置高度和宽度当我将使用此自定义视图时,自己会评估xml属性
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/parent_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary"
android:orientation="vertical"
tools:context=".MainActivity">
<production.kado.lock.views.PinView
android:id="@+id/pinView"
android:layout_centerInParent="true"
android:layout_width="300dp"
android:layout_height="200dp"
app:changePassword="true" />
</RelativeLayout>
答案 0 :(得分:0)
如何在onSizeChanged中进行计算?
答案 1 :(得分:0)
向Res/values/attrs.xml
<declare-styleable name="PinView">
<attr name="changePassword" format="boolean" />
<attr name="customSize" format="boolean" />
</declare-styleable>
在具有属性的构造函数中,检索customSize布尔值
TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.PinView, 0, 0);
//Set CustomSize boolean Global Variable
customSize = a.getBoolean(R.styleable.PinView_customSize, false);
然后更改您的onAttachedToWindow
方法:
protected void onAttachedToWindow() {
super.onAttachedToWindow();
if(!customSize) {
pinView.getLayoutParams().height = ViewUtil.getPinPadHeight();
pinView.getLayoutParams().width = ViewUtil.getPinPadWidth();
}
}
通过这种方式,如果app:customSize="true"
,它将跳过ViewUtil.getPinPadHeight()
和ViewUtil.getPinPadWidth()