1

私はAndroid開発に完全に慣れているので、これはむしろ素人の質問です。

最近、アンドロイドを使って簡単な電卓を実装しようとしています。

電卓を 2 行に表示して、ユーザーが入力した方程式を上に表示し、下に答えを表示したいと考えています。

レイアウト xml ファイルのコードは次のとおりです。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<LinearLayout
    android:id="@+id/linearLayout0"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true">

    <TextView
        android:id="@+id/calculatorDisplay0"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:maxLines="1"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textSize="40sp" />
</LinearLayout>

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true" 
    android:layout_below="@+id/linearLayout0" >

    <TextView
        android:id="@+id/calculatorDisplay1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:layout_below="@id/calculatorDisplay0"
        android:maxLines="1"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:text="0"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textSize="40sp" />
</LinearLayout>
     .
     .
     .
     .

ただし、これは結果です。

ここに画像の説明を入力

ご覧のとおり、2 つの行が入れ子になっています。

コードに何か問題があると確信していますが、それを見つけることができません。誰か助けてくれませんか?

4

4 に答える 4

2

テキスト ビューごとに個別の線形レイアウトを使用する理由はありません。縦方向の 1 つのレイアウトに次々と配置します。

<LinearLayout
    android:id="@+id/linearLayout0"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:id="@+id/calculatorDisplay0"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:maxLines="1"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textSize="40sp" />

    <TextView
        android:id="@+id/calculatorDisplay1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:maxLines="1"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:text="0"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textSize="40sp" />
</LinearLayout>

また、不要な属性がいくつかありますが、これは回答で削除しました。

于 2013-04-25T10:32:23.850 に答える
1
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"

これらは、2 番目の TextView (LinearLayout のコンテンツ) が既に上部にあるものと重複することを明示的に宣言した 2 番目の LinearLayout の属性です。layout_*よくわかりませんが、その LinearLayout で属性を指定しなくても同じ結果が得られると思います。よく見ると、継ぎ目android:layout_below="@+id/linearLayout0"属性が無視されていました。いずれにしても と競合しlayout_alignParentTopていました。今後気をつけてください。

あなたが説明した望ましい動作は、属性を持つ LinearLayout の典型android:orientation="vertical"です。あなたは正しい軌道に乗っていました。orientation変更する必要があるのは、最初の LinearLayout で 2 番目の TextView を移動することです。これにより、デフォルトの向きが水平[1]であるため、目的の属性を管理および追加する 2 つのビューがあることがわかります。

レイアウト XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<LinearLayout
    android:id="@+id/linearLayout0"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/calculatorDisplay0"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:maxLines="1"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textSize="40sp" />

    <TextView
        android:id="@+id/calculatorDisplay1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:layout_below="@id/calculatorDisplay0"
        android:maxLines="1"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:text="0"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textSize="40sp" />

</LinearLayout>
     .
     .
     .
     .
于 2013-04-25T11:02:45.123 に答える