私は、再利用可能な数値キーボードを使ってアプリケーションを構築しています。キーボードは独自のXMLファイルに配置されているため、アプリ全体で必要な場所に組み込むことができます。現在のアクティビティの画面を、下部にある固定サイズの数値キーボードと、残りのコントロールのRelativeLayout(RL)の2つに分割したいと思います。Android - レイアウトの不一致解決に必要なヘルプ(RelativeLayoutとLinearLayout)
問題は、RLが動作していないことです。以下の例では、RLが画面全体を占め、キーボードは表示されません。本当に奇妙なのは、配置を逆にしてキーボードの上にキーボードを置くと、画面が期待通りに表示され、キーボードとRLがそれぞれ約半分を占めるということです。
つまり、キーボードが上部に含まれている場合、すべて正常です(ただし、キーボードは間違った場所にあります)。しかし、キーボードを底部に入れると、キーボードは表示されず、RLは画面全体を占有します。
ヘルプ!このような不一致が私には嫌な思いを抱かせ、私は部屋の向こう側にコンピュータを投げつける寸前です。
活動のXML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/statsTabLayout"
android:scaleType="fitXY"
android:background="#ffffff"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:baselineAligned="true"
android:orientation="vertical">
<RelativeLayout android:id="@+id/statsTopLayout"
android:background="#ffffff"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:orientation="vertical">
<TextView android:id="@+id/textViewTopMargin"
android:text=" "
android:textColor="#FFFFFF"
android:textSize = "5sp"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="top"
android:layout_alignParentLeft="true"
android:paddingTop="0px"
></TextView>
<TextView android:id="@+id/textViewAverage"
android:text="Average = (%)"
android:textColor="#000000"
android:textSize = "25sp"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:paddingBottom="5px"
android:layout_below="@+id/textViewTopMargin"
android:layout_alignParentLeft="true"
></TextView>
<Button android:id="@+id/buttonReset"
android:text="reset"
android:onClick="resetButtonClick"
android:textSize = "12sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/textViewAverage"
android:layout_alignBottom="@+id/textViewAverage"
android:layout_below="@+id/textViewTopMargin"
android:layout_alignParentRight="true"
></Button>
<TextView android:id="@+id/textViewHi"
android:text="High= "
android:textColor="#000000"
android:textSize = "20sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5px"
android:layout_below="@+id/textViewAverage"
android:layout_alignParentLeft="true"
></TextView>
<TextView android:id="@+id/textViewLow"
android:text="Low= "
android:textColor="#000000"
android:textSize = "20sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5px"
android:layout_below="@+id/textViewAverage"
android:layout_centerHorizontal="true"
></TextView>
<TextView android:id="@+id/textViewMax"
android:text="Max= "
android:textColor="#000000"
android:textSize = "20sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5px"
android:layout_below="@+id/textViewAverage"
android:layout_alignParentRight="true"
></TextView>
<TextView android:id="@+id/textViewScore"
android:text="Score = "
android:textColor="#000000"
android:textSize = "30sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="5px"
android:layout_above="@+id/textViewScoreCalculation"
android:layout_alignParentLeft="true"
></TextView>
<TextView android:id="@+id/textViewScoreCalculation"
android:text="(score calculation)"
android:textColor="#000000"
android:textSize = "20sp"
android:textStyle="italic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="10px"
android:layout_above="@+id/editTextPoints"
android:layout_alignParentRight="true"
></TextView>
<TextView android:id="@+id/textViewPoints"
android:text="Enter Points: "
android:textSize = "30sp"
android:textColor="#000000"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/textViewBottomMargin"
android:layout_alignParentLeft="true"
android:paddingBottom="10px"
></TextView>
<EditText android:id="@+id/editTextPoints"
android:text=""
android:digits="-."
android:windowSoftInputMode="stateVisible"
android:focusable="true"
android:textSize = "30sp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/textViewPoints"
android:layout_alignBottom="@+id/textViewPoints"
android:layout_above="@+id/textViewBottomMargin"
android:layout_toRightOf="@+id/textViewPoints"
android:paddingBottom="10px"
></EditText>
<TextView android:id="@+id/textViewBottomMargin"
android:text=" "
android:textColor="#FFFFFF"
android:textSize = "5sp"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:paddingBottom="0px"
></TextView>
</RelativeLayout>
<include layout="@layout/numerickeyboard" />
</LinearLayout>
含まキーボードの親のレイアウト:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="104pt"
android:id="@+id/numberPadLayoutContainer"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:background="#404040"
android:layout_alignParentBottom="true"
>
任意の提案ですか?
これはいいですが、私が探している解決策であるかどうかはわかりません。上のコントロールを含む相対レイアウトが追加され、分離が可能になりました。トップの平均/ハイ/ロー/マックス、ミドルのスコア/スコアの校正、ボトムのポイント入力。それは、大きな携帯電話やタブレットで使用すると、アプリのサイズを自然に変えることができます。あなたが提案するソリューションは、大きな電話機やタブに大きな空白を残して、上部にコントロールをクラスタ化します。 – codingCat
それでは、もう一度、画面上に唯一のレイアウトであるかのようにコントロールを配置できるようにしながら、上部にはRelativeLayoutを、下部にはキーボード(RelativeLayout)を追加する方法もあります。 – codingCat
私はあなたの修正された質問の解決策を提供するために答えを編集しました。 – cdhabecker