我是 Android 编程新手。
我的问题是确定子视图的宽度和高度的最佳方法是什么?
我正在编写一个应用程序,其中包括一个用于输入的钢琴键盘。
我有一个自定义视图,PianoKeyboardView。我需要知道 View 的尺寸才能绘制键盘。如果我将以下代码中的宽度和高度填充到我的 PianoKeyboardView 中,我的钢琴键盘画得很好。
Display display = ((WindowManager) this
.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int width = display.getWidht();
int height = display.getHeight();
显然我不想这样做。
我在 Eclipse 中创建了一个默认的 android 应用程序并选择了 FullScreen 选项。onCreate 的默认代码是:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fullscreen);
final View controlsView = findViewById(R.id.fullscreen_content_controls);
final View contentView = findViewById(R.id.fullscreen_content);
当我在默认视图上调用 getWidth() 和 getHeight() 时,我得到 0。
int width = controlsView.getWidth();
int height = controlsView.getHeight();
width = contentView.getWidth();
height = contentView.getHeight();
我的 PianoKeyboardView 宽度和高度也是 0,这是我的问题。
我的 activity_fullscreen.xml 将所有视图的宽度和高度设置为“match_parent”</p>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true" >
<LinearLayout
android:id="@+id/fullscreen_content_controls"
style="?buttonBarStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal"
android:background="@color/black_overlay"
android:orientation="horizontal"
tools:ignore="UselessParent" >
<com.application.piano.PianoKeyboardView
android:id="@+id/keyboard_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
/>
谢谢。