0
我有一個自動生成一些框架佈局的自定義相對佈局。每個框架佈局都有一個Height和Margin-Top,取決於我的CustomView的高度。如果我試圖從構造函數中獲得,我收到null作爲答案。我嘗試過getHeight()
和getMeasuredHeight()
,但它不起作用。我可以覆蓋onMeasure()
或onLayout()
方法,但我不能使用我得到的值,因爲這2個方法在構造函數之後被調用。在xml構造函數中獲取CustomView的高度
<?xml version="1.0" encoding="utf-8"?>
<com.cviing.cviing.FolderStackLayout
android:background="@color/colorAccent"
android:id="@+id/activity_cv2"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.cviing.cviing.CV2"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
</com.cviing.cviing.FolderStackLayout>
類:
public class FolderStackLayout extends RelativeLayout {
int gap = 10;
int foldersNumber = 10;
Context context;
int height;
private int position;
int baseTop;
public FolderStackLayout(Context context) {
super(context);
init(context, null, 0);
}
public FolderStackLayout(Context context, AttributeSet attrs) {
super(context, attrs);
init(context, attrs, 0);
}
public FolderStackLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context, attrs, defStyleAttr);
}
public void init (Context context, AttributeSet attrs, int defStyleAttr){
this.context = context;
createView();
}
@Override
protected void onLayout(boolean changed,
int left,
int top,
int right,
int bottom) {
int height = getMeasuredHeight();
if (height > 0) {
baseTop = height/getCount() - gap;
}
}
public int getCount(){
return foldersNumber;
}
public int getPosition() {
return position;
}
public void createView(){
}
}
我該怎麼辦?
我不創建一個對象。我已經在xml文件中創建了它,並且指定了他的高度是MATCH_PARENT。 –
@FabioPiunti:沒關係。 – CommonsWare
我無法從onMeasure()添加孩子。 onLayout()或onDraw()。這常見問題經常被調用,並不方便 –