0

ImageView を左に移動するのに問題があります。ボタンを押すたびにやらなければならないのですが、通常は8回しか押せません。問題は、作業中のタブレットの解像度に関係なく、ステップ 4 で画像が小さくなることです。画像サイズは、TextView の桁サイズに設定されます。10 インチのタブレットでは 51 ピクセル、7 インチのタブレットでは 36 ピクセルです。このサイズは、両方のデバイスでサイズが 26 になるボタンを 4 回押すまで保持されます。私は本当に立ち往生していて、これがなぜなのか理解できません.多分あなたは私に手を差し伸べることができます.

xml は次のとおりです。

    <EditText
        android:id="@+id/secondNumber"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:background="#00000000"
        android:ellipsize="end"
        android:gravity="right"
        android:hint="@string/second_number_hint"
        android:inputType="number"
        android:maxLength="8"
        android:textSize="@dimen/number" />

    <EditText
        android:id="@+id/firstNumber"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@id/secondNumber"
        android:layout_centerInParent="true"
        android:background="#00000000"
        android:ellipsize="end"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:gravity="right"
        android:hint="@string/first_number_hint"
        android:imeOptions="actionSend"
        android:inputType="number"
        android:maxLength="8"
        android:textAlignment="textEnd"
        android:textSize="@dimen/number" />

    <View
        android:id="@+id/separator"
        android:layout_width="0px"
        android:layout_height="0.3dp"
        android:layout_alignLeft="@+id/secondNumber"
        android:layout_alignRight="@+id/secondNumber"
        android:layout_below="@+id/secondNumber"
        android:background="#000000" />

    <Button
        android:id="@+id/nextStep"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:text="@string/next"
        android:visibility="invisible" />

    <Button
        android:id="@+id/previousStep"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_toRightOf="@+id/nextStep"
        android:text="@string/previous"
        android:visibility="invisible" />

    <TextView
        android:id="@+id/additionSign"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/firstNumber"
        android:layout_alignBottom="@+id/firstNumber"
        android:layout_toRightOf="@+id/firstNumber"
        android:text="@string/addition_sign"
        android:textSize="@dimen/number" />

    <Button
        android:id="@+id/newAddition"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_toRightOf="@+id/previousStep"
        android:text="@string/new_addition"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/secondAdditionArrow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/firstAdditionArrow"
        android:layout_centerVertical="true"
        android:contentDescription="@string/content_description_show_first_number"
        android:src="@drawable/blue_arrow"
        android:visibility="invisible" />

    <TextView
        android:id="@+id/additionMessage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/secondAdditionArrow"
        android:layout_toRightOf="@+id/firstAdditionArrow"
        android:text="@string/addition_message"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="@color/blue_arrow_text_color"
        android:textSize="@dimen/arrow_message_size"
        android:textStyle="bold"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/firstAdditionArrow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/additionSign"
        android:layout_alignTop="@+id/additionSign"
        android:layout_toRightOf="@+id/additionSign"
        android:contentDescription="@string/content_description_show_first_number"
        android:src="@drawable/blue_arrow"
        android:visibility="invisible" />

    <TextView
        android:id="@+id/finishedMessage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_below="@+id/result"
        android:layout_centerHorizontal="true"
        android:gravity="center|top"
        android:lines="5"
        android:maxEms="15"
        android:text="@string/addition_finish_message"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="@color/red_arrow_color_text"
        android:textSize="@dimen/arrow_message_size"
        android:textStyle="bold"
        android:visibility="invisible" />

    <TextView
        android:id="@+id/carryDigit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/firstNumber"
        android:layout_alignRight="@+id/firstNumber"
        android:text="@string/carry_digit"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="@color/green_arrow_text_color"
        android:textSize="@dimen/number"
        android:textStyle="bold"
        android:visibility="invisible" />

    <EditText
        android:id="@+id/result"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@id/separator"
        android:layout_below="@+id/separator"
        android:background="#00000000"
        android:ellipsize="end"
        android:enabled="false"
        android:gravity="right"
        android:hint="@string/result"
        android:inputType="number"
        android:maxLength="10"
        android:textSize="@dimen/number" >

        <requestFocus />
    </EditText>

    <ImageView
        android:id="@+id/digitKeepArrow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/result"
        android:layout_below="@+id/result"
        android:contentDescription="@string/show_addition_result"
        android:src="@drawable/red_arrow"
        android:visibility="invisible" />

    <TextView
        android:id="@+id/keedTheDigitMessage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/digitKeepArrow"
        android:layout_below="@+id/digitKeepArrow"
        android:gravity="fill|center"
        android:maxLines="1"
        android:minEms="10"
        android:text="@string/addition_message"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="@color/red_arrow_color_text"
        android:textSize="@dimen/arrow_message_size"
        android:textStyle="bold"
        android:visibility="invisible" />

    <TextView
        android:id="@+id/carryDigitMessage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/carryDigitArrow"
        android:layout_alignLeft="@+id/carryDigitArrow"
        android:minEms="10"
        android:text="@string/carry_digit"
        android:textColor="@color/green_arrow_text_color"
        android:textSize="@dimen/arrow_message_size"
        android:textStyle="bold"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/carryDigitArrow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/carryDigit"
        android:layout_alignRight="@+id/firstNumber"
        android:contentDescription="@string/show_carry_digit"
        android:src="@drawable/green_arrow"
        android:visibility="invisible" />

</RelativeLayout>

ImageView を移動する関数は次のとおりです。

  Rect bounds = new Rect();
        Paint textPaint = firstNumber.getPaint();
        textPaint.getTextBounds(firstNumber.getText().toString(), 0,
                firstNumber.getText().toString().length(), bounds);
        int width = bounds.width();


            RelativeLayout.LayoutParams position = new RelativeLayout.LayoutParams(
                    arrow.getWidth(), arrow.getHeight());

            position.setMargins(
                    arrow.getLeft() - width / this.firstNumber.size(),
                    arrow.getTop(), arrow.getLeft(), arrow.getBottom());



            arrow.setLayoutParams(position);


        }

ディメンション xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="number">55dp</dimen>
    <dimen name="arrow_message_size">32dp</dimen>
</resources>

画像を直接投稿することはできません。申し訳ありません。

そして、strings.xml ファイル:

<resources>

    <string name="app_name">Math Tutor</string>
    <string name="title_main_activity">Math Tutor</string>
    <string name="welcome_message">Welcome to Math Tutor! Choose an operation from the left side pane to get started.</string>
    <string name="menu_title">Basic Math</string>
    <string name="addition_sign">+</string>
    <string name="solve">Solve</string>
    <string name="next">Next</string>
    <string name="previous">Previous</string>
    <string name="insert_first_number">Insert first number</string>
    <string name="first_step">First step</string>
    <string name="second_step">Second step</string>
    <string name="third_step">Third step</string>
    <string name="first_number_hint">Number 1</string>
    <string name="second_number_hint">Number 2</string>
    <string name="result">Result</string>
    <string name="new_addition">New Addition</string>
    <string name="subtraction_sign">-</string>
    <string name="number">Number</string>
    <string name="exponent">Exponent</string>
    <string name="equal_sign">=</string>
    <string name="power">Power</string>
    <string name="base">Base</string>
    <string name="content_description_show_first_number">Show first number</string>
    <string name="addition_message">Addition</string>
    <string name="show_addition_result">Show addition result</string>
    <string name="addition_finish_message">The operation is finished. Press New Addition for a new addition!</string>
    <string name="carry_digit">1</string>
    <string name="show_carry_digit">Show carry digit</string>

</resources>

奇妙な部分は、私がこの方法で矢印を好きなように動かすことができたということですが、これは私がやりたいことをしたくないようです。

アップデート

ステップ4でサイズ変更を修正できましたが、ステップ8に到達すると常に画像が引き伸ばされます。更新されたコードは次のとおりです。

Rect bounds = new Rect();
        Paint textPaint = result.getPaint();
        textPaint.getTextBounds(result.getText().toString(), 0, result
                .getText().toString().length(), bounds);
        int width = bounds.width();

        RelativeLayout.LayoutParams position = new RelativeLayout.LayoutParams(
                this.carryDigitArrowOriginalPosition.width,
                this.carryDigitArrowOriginalPosition.height);
        position.setMargins(this.carryDigitArrowOriginalPosition.leftMargin
                - width, this.carryDigitArrowOriginalPosition.topMargin,
                result.getRight(),
                this.carryDigitArrowOriginalPosition.bottomMargin);

残りは同じです。幅が広いのに画像が伸びる理由がわかりません。何が起こるかの 2 つの画面を次に示します。

働いていない

4

0 に答える 0