私はAndroidプログラミングに不慣れです。
私の質問は、サブビューの幅と高さを決定するための最良の方法は何ですか?
入力用のピアノ鍵盤を含むアプリケーションを書いています。
カスタムビュー、PianoKeyboardViewがあります。キーボードを描画するには、ビューの寸法を知る必要があります。次のコードの幅と高さを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"
/>
ありがとう。