主要因為在XML中在設計UI時沒辦法做得非常完美

所以android也是可以用JAVA的部分設計動態的UI按件

同時也較可以抓取螢幕的長寬來對物件的大小做調整

使在不同的機台有更好的表現

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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".development">

<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="0"
android:id="@+id/textView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textSize="30dp" />

<GridLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/textView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@+id/root"
android:columnCount="3"
android:rowCount="3"></GridLayout>

</RelativeLayout>

 

 

JAVA:

public class development extends ActionBarActivity implements View.OnClickListener {
Button[] button ;
TextView count_num ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_development);
count_num = new TextView(this) ;
count_num = (TextView)findViewById(R.id.textView ) ;
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics); //抓取螢幕大小的資料
int with = metrics.widthPixels/4 ; // 螢幕的寬度/4放近with
button = new Button[9] ;
GridLayout gridLayout = (GridLayout)findViewById(R.id.root) ;
gridLayout.setColumnCount(3); // 設定GridLayout有幾行
gridLayout.setRowCount(3); // 設定GridLayout有幾列
for(int i =0; i <9 ; i++) {
button[i] = new Button(this) ;
button[i].setText(String.valueOf(i + 1)); // 設定Button中的的字
button[i].setMinWidth(with); // 設定button寬度
button[i].setMinHeight(with); // 設定button高度
button[i].setId(i); // 設定Button的ID
button[i].setOnClickListener(this);
gridLayout.addView(button[i]); // 按照格子的順序依序放近GridLayout
/*
助解的部分世代表有另外一種設定模式直接指定在第幾行第幾列放入資料
Spec rowSpec = GridLayout.spec(i /3 );
Spec columnSpec = GridLayout.spec(i % 3);
LayoutParams layoutParams = new LayoutParams( rowSpec, columnSpec );
layoutParams.setGravity(Gravity.FILL);
gridLayout.addView(button[i], layoutParams);
*/
}
}

....

@Override
public void onClick(View v) {
String temp = (String) count_num.getText(); // 抓取Text裡面的字串
for(int i = 0 ; i < 9 ; i++) {
if( v.getId() == button[i].getId() ){
temp = temp +"+" + (i+1) ; // 把字串加長"+i"
count_num.setText(temp); // 顯示
}
}
}

手機InFocus M2+實際執行解果:
開始:

Screenshot_2015-08-24-16-33-41

 

按了一些按件後:

  

Screenshot_2015-08-24-16-33-49

  
arrow
arrow
    文章標籤
    android gridlayout button
    全站熱搜

    mountain0212 發表在 痞客邦 留言(0) 人氣()