0

私は最初の Android Calculator を作成しようとしています。最初に書いたコードは、画面サイズに応じてサイズ変更されない小さなボタンの計算機になりました。

私はインターネットで検索し、それを行ういくつかの方法を見つけました.これがその原因となるコードの一部です-0から19までの番号が付けられた20個のボタンがあります-

@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_welcome);
    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    int width,height;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2)
    {
        WindowManager w = getWindowManager();
        w.getDefaultDisplay().getSize(size);
        width = size.x;
        height = size.y;
    }
    else
    {
        width = display.getWidth();
        height = display.getHeight();
    }
    Button b;
    TextView text1 = (TextView)findViewById(R.id.screen);
    text1.setWidth(width);
    width/=6;
    height/=7;
    text1.setHeight(height);
    for (int i=0;i<20;i++)
    {
        String ButtonName = "button"+i;
        int ButtonId = getResources().getIdentifier(ButtonName, "id", "calculator.essam.net");
        b = (Button)findViewById(ButtonId);
        RelativeLayout.LayoutParams par = new RelativeLayout.LayoutParams(b.getLayoutParams());
par.width = width;
par.height = height;
        b.setLayoutParams(par);
    }
}

XML ファイルには、 、 、 、 、 、 などのボタンレイアウトルールがリストされてます。toLeftOftoRightOfabovebelowalignParentTopalignParentLeftalignParentRightalignParentBottom

<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=".WelcomeActivity" >


<TextView
    android:id="@+id/screen"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_alignParentTop="true"
    android:text="" />

<Button
    android:id="@+id/button0"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/button18"
    android:layout_alignParentLeft="true"
    android:minHeight="0dp"
    android:minWidth="0dp"
    android:onClick="click"
    android:tag="0"
    android:text="@string/number0" />

<Button
    android:id="@+id/button1"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/button0"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/button4"
    android:minHeight="0dp"
    android:minWidth="0dp"
    android:onClick="click"
    android:tag="1"
    android:text="@string/number1" />

<Button
    android:id="@+id/button2"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/button10"
    android:layout_below="@+id/button5"
    android:layout_toLeftOf="@+id/button3"
    android:layout_toRightOf="@+id/button1"
    android:minHeight="0dp"
    android:minWidth="0dp"
    android:onClick="click"
    android:tag="2"
    android:text="@string/number2" />

<Button
    android:id="@+id/button3"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/button15"
    android:layout_below="@+id/button6"
    android:layout_toLeftOf="@+id/button13"
    android:minHeight="0dp"
    android:minWidth="0dp"
    android:onClick="click"
    android:tag="3"
    android:text="@string/number3" />

<Button
    android:id="@+id/button4"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/button7"
    android:layout_toLeftOf="@+id/button5"
    android:minHeight="0dp"
    android:minWidth="0dp"
    android:onClick="click"
    android:tag="4"
    android:text="@string/number4" />

<Button
    android:id="@+id/button5"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/button8"
    android:layout_toLeftOf="@+id/button6"
    android:minHeight="0dp"
    android:minWidth="0dp"
    android:onClick="click"
    android:tag="5"
    android:text="@string/number5" />

<Button
    android:id="@+id/button6"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/button9"
    android:layout_toLeftOf="@+id/button12"
    android:minHeight="0dp"
    android:minWidth="0dp"
    android:onClick="click"
    android:tag="6"
    android:text="@string/number6" />

<Button
    android:id="@+id/button7"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/screen"
    android:layout_toLeftOf="@+id/button8"
    android:minHeight="0dp"
    android:minWidth="0dp"
    android:onClick="click"
    android:tag="7"
    android:text="@string/number7" />

<Button
    android:id="@+id/button8"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/screen"
    android:layout_toLeftOf="@+id/button9"
    android:minHeight="0dp"
    android:minWidth="0dp"
    android:onClick="click"
    android:tag="8"
    android:text="@string/number8" />

<Button
    android:id="@+id/button9"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/screen"
    android:layout_toLeftOf="@+id/button11"
    android:minHeight="0dp"
    android:minWidth="0dp"
    android:onClick="click"
    android:tag="9"
    android:text="@string/number9" />

<Button
    android:id="@+id/button10"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/button19"
    android:layout_toRightOf="@+id/button0"
    android:minHeight="0dp"
    android:minWidth="0dp"
    android:onClick="click"
    android:tag="."
    android:text="@string/dot" />

<Button
    android:id="@+id/button11"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/button12"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/screen"
    android:minHeight="0dp"
    android:minWidth="0dp"
    android:onClick="click"
    android:tag="+"
    android:text="@string/signPlus" />

<Button
    android:id="@+id/button12"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/button13"
    android:layout_alignParentRight="true"
    android:minHeight="0dp"
    android:minWidth="0dp"
    android:onClick="click"
    android:tag="-"
    android:text="@string/signMinus" />

<Button
    android:id="@+id/button13"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/button14"
    android:layout_alignParentRight="true"
    android:minHeight="0dp"
    android:minWidth="0dp"
    android:onClick="click"
    android:tag="*"
    android:text="@string/signTimes" />

<Button
    android:id="@+id/button14"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/button17"
    android:layout_alignParentRight="true"
    android:layout_toRightOf="@+id/button15"
    android:minHeight="0dp"
    android:minWidth="0dp"
    android:onClick="click"
    android:tag="/"
    android:text="@string/signDivide" />

<Button
    android:id="@+id/button15"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/button16"
    android:layout_toRightOf="@+id/button10"
    android:minHeight="0dp"
    android:minWidth="0dp"
    android:onClick="click"
    android:tag="="
    android:text="@string/signEquals" />

<Button
    android:id="@+id/button16"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_toLeftOf="@+id/button17"
    android:layout_toRightOf="@+id/button19"
    android:minHeight="0dp"
    android:minWidth="0dp"
    android:onClick="click"
    android:tag="("
    android:text="@string/openBracket" />

<Button
    android:id="@+id/button17"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:minHeight="0dp"
    android:minWidth="0dp"
    android:onClick="click"
    android:tag=")"
    android:text="@string/closedBracket" />

<Button
    android:id="@+id/button18"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:minHeight="0dp"
    android:minWidth="0dp"
    android:onClick="click"
    android:tag="CLR"
    android:text="@string/clear"
    android:textSize="12sp" />

<Button
    android:id="@+id/button19"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_toRightOf="@+id/button18"
    android:minHeight="0dp"
    android:minWidth="0dp"
    android:onClick="click"
    android:tag="DEL"
    android:text="@string/backSpace"
    android:textSize="12sp" />

</RelativeLayout>

問題は、使用するとRelativeLayout.LayoutParamsすべてのレイアウト ルールが上書きされ、 と を使用するbutton.setWidth()button.setHeight()、レイアウト ルールは同じままですが、サイズは変わりません。

4

1 に答える 1

1

既存のレイアウト パラメータに幅と高さを設定し、新しいものに置き換えないでください。を使用して、レイアウト インフレーション中に作成されたレイアウト パラメータにアクセスできますgetLayoutParams()。つまり、交換

RelativeLayout.LayoutParams par = new RelativeLayout.LayoutParams(b.getLayoutParams());

RelativeLayout.LayoutParams par = b.getLayoutParams();

ただし、この種のレイアウトについては忘れて、使用LinearLayout layout_weight可能なスペースに相対的なビュー サイズを作成するメカニズムを使用することを学ぶことをお勧めします。

于 2013-05-07T08:26:22.887 に答える