我想讓我的第一個Android計算器,我寫的第一個代碼導致計算器的小按鈕,它不根據屏幕大小重新調整大小。 我在網上搜索,發現了一些方法來做到這一點,這裏的代碼負責的一部分 - 我有20個按鈕,編號從0到19 -Android相對佈局:按鈕佈局參數衝突
@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文件中,列出的我按鈕佈局規則,如toLeftOf
,toRightOf
,above
,below
,alignParentTop
,alignParentLeft
,alignParentRight
和alignParentBottom
。
<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.LayoutParams
我所有的佈局規則被覆蓋,當我使用button.setWidth()
和button.setHeight()
,佈局規則保持不變,但規模不會改變。 任何幫助,歡迎提前致謝。
RelativeLayout.LayoutParams par = new RelativeLayout.LayoutParams(b.getLayoutParams()); 我不確定這是否是正確的語法,但我從按鈕「b」獲取佈局參數 – 2013-05-07 08:36:38
這會創建一個傳遞給ViewGroup.LayoutParams的副本(它是RelativeLayout的超類.LayoutParams',但是'RelativeLayout'的所有特殊化都會丟失,只要使用'RelativeLayout.LayoutParams par = b.getLayoutParams()',假設'b'的父親是'RelativeLayout'。更新了答案。 – laalto 2013-05-07 08:49:34
看來b.getLayoutParams()是ViewGroup.LayoutParams而不是RelativeLayout.LayoutParams ... – 2013-05-07 08:57:46