我正在嘗試使用寬度作爲高度來製作正方形的自定義視圖。我也在使用預先定義的佈局,因爲它是UI,所以我膨脹了。只要我覆蓋onMeasure,自定義視圖就不會再出現。這裏是我的代碼:Android:自定義視圖
public class MyView extends RelativeLayout{
public MyView(Context context) {
super(context);
addView(setupLayout(context));
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
addView(setupLayout(context));
}
public MyView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
addView(setupLayout(context));
}
private View setupLayout(Context context) {
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View myView = inflater.inflate(R.layout.view_layout, null);
return myView;
}
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.getSize(widthMeasureSpec));
}
}
我有2個問題:
- 如何重寫onMeasure使得它吸引我的看法,我期待它的方式?
- 有沒有什麼辦法可以讓這個視圖層次結構方面更有效(即不能把一個RelativeLayout的內部的RelativeLayout)
@trumpetlicks [RlativeLayout是View的後代](http://developer.android.com/reference/android/widget/RelativeLayout.html)。你的第二點是什麼? – Sam
這是一個奇蹟,這個編譯。你有一個不同的類的構造函數(MenuButton)。 – tiguchi
@NobuGames我很樂意猜測這是作者類的簡化版本。作者覺得有必要改變類名,他們只是忘了改變那個構造函數的名字。沒有必要諷刺,我願意猜測你也不完美。 – Sam