2012-07-31 45 views
0

我有一個RelativeLayout有12個按鈕,我想在屏幕的中心很好地對齊它們,並且距離彼此相等,左右邊距相等(如計算器按鈕或電話按鈕) 。我所做的是在這個XML文件和圖片中的結果,但它仍然不完美。你們有更好的解決方案嗎?Android:很好地對齊許多按鈕

enter image description here

<RelativeLayout 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/tabview1"> 
    <TextView 
     android:id="@+id/logo" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:text="www.fasttest.me" 
     android:textColor="@android:color/white"/> 

    <Button 
     android:id="@+id/ql0" 
     android:layout_width="@dimen/qlbutton_width" 
     android:layout_height="@dimen/qlbutton_height" 
     android:layout_marginTop="100dp" 
     android:layout_marginLeft="10dp" 
     android:text="b0" /> 
    <Button 
     android:id="@+id/ql1" 
     android:layout_width="@dimen/qlbutton_width" 
     android:layout_height="@dimen/qlbutton_height" 
     android:layout_marginTop="100dp" 
     android:layout_marginLeft="80dp" 
     android:text="b1" /> 
    <Button 
     android:id="@+id/ql2" 
     android:layout_width="@dimen/qlbutton_width" 
     android:layout_height="@dimen/qlbutton_height" 
     android:layout_marginTop="100dp" 
     android:layout_marginLeft="150dp" 
     android:text="b2" /> 
    <Button 
     android:id="@+id/ql3" 
     android:layout_width="@dimen/qlbutton_width" 
     android:layout_height="@dimen/qlbutton_height" 
     android:layout_marginTop="100dp" 
     android:layout_marginLeft="220dp" 
     android:text="b3" /> 
    <Button 
     android:id="@+id/ql4" 
     android:layout_width="@dimen/qlbutton_width" 
     android:layout_height="@dimen/qlbutton_height" 
     android:layout_marginTop="180dp" 
     android:layout_marginLeft="10dp" 
     android:text="b4" /> 
    <Button 
     android:id="@+id/ql5" 
     android:layout_width="@dimen/qlbutton_width" 
     android:layout_height="@dimen/qlbutton_height" 
     android:layout_marginTop="180dp" 
     android:layout_marginLeft="80dp" 
     android:text="b5" /> 
    <Button 
     android:id="@+id/ql6" 
     android:layout_width="@dimen/qlbutton_width" 
     android:layout_height="@dimen/qlbutton_height" 
     android:layout_marginTop="180dp" 
     android:layout_marginLeft="150dp" 
     android:text="b6" /> 
    <Button 
     android:id="@+id/ql7" 
     android:layout_width="@dimen/qlbutton_width" 
     android:layout_height="@dimen/qlbutton_height" 
     android:layout_marginTop="180dp" 
     android:layout_marginLeft="220dp" 
     android:text="b7" /> 
    <Button 
     android:id="@+id/ql8" 
     android:layout_width="@dimen/qlbutton_width" 
     android:layout_height="@dimen/qlbutton_height" 
     android:layout_marginTop="260dp" 
     android:layout_marginLeft="10dp" 
     android:text="b8" /> 
    <Button 
     android:id="@+id/ql9" 
     android:layout_width="@dimen/qlbutton_width" 
     android:layout_height="@dimen/qlbutton_height" 
     android:layout_marginTop="260dp" 
     android:layout_marginLeft="80dp" 
     android:text="b9" /> 
    <Button 
     android:id="@+id/ql10" 
     android:layout_width="@dimen/qlbutton_width" 
     android:layout_height="@dimen/qlbutton_height" 
     android:layout_marginTop="260dp" 
     android:layout_marginLeft="150dp" 
     android:text="b10" /> 
    <Button 
     android:id="@+id/ql11" 
     android:layout_width="@dimen/qlbutton_width" 
     android:layout_height="@dimen/qlbutton_height" 
     android:layout_marginTop="260dp" 
     android:layout_marginLeft="2dp" 
     android:text="b11" /> 
    </RelativeLayout> 
+1

你看過'LinearLayouts'與'layout_weight'嗎? – Squonk 2012-07-31 22:58:22

回答

3

我建議你使用GridView裏面的按鈕。給每個按鈕相同的重量,以便自己伸展自己:

<Button 
    android:id="@+id/ql3" 
    android:layout_height="@dime/button_height" 
    android:layout_width="0dp" 
    android:layout_weight="1" 
    android:padding="@dimen/buttons_padding" 
    android:text="b3" /> 
+0

感謝您的提示,我得到了代碼 – DavidNg 2012-08-01 13:57:28

1

您可以使用此Roland Guy的自定義GridLayout。指定行數和列數。屏幕將被分成相同大小的單元格。

這裏是link

+0

感謝您的提示,我得到了下面的代碼 – DavidNg 2012-08-01 13:57:40

0

我終於把它與按鈕的GridView控件完成。這裏是代碼:

public class MainActivity extends Activity { 
    public String[] filenames ={"B1","B2","B3","B4","B5","B6"};   
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main);   
     GridView gridView = (GridView) findViewById(R.id.gridview); 
     gridView.setAdapter(new ButtonAdapter(this)); 
     gridView.setOnItemClickListener(new OnItemClickListener(){ 
      public void onItemClick(AdapterView<?> parent, 
      View v, int position, long id){     
       Toast.makeText(getBaseContext(), 
         "pic" + (position + 1) + " selected", 
         Toast.LENGTH_SHORT).show(); 
      } 
     });   
    } 

    public class ButtonAdapter extends BaseAdapter { 
     private Context context;  
     public ButtonAdapter(Context c){ 
      context = c; 
     } 
     public int getCount() { 
      return filenames.length; 
     } 
     public Object getItem(int position) { 
      return position; 
     }  
     public long getItemId(int position) { 
      return position; 
     } 
     public View getView(int position, View convertView, ViewGroup parent){ 
       Button btn; 
       if (convertView == null) { 
        btn = new Button(context); 
        btn.setLayoutParams(new GridView.LayoutParams(100, 100)); 
        btn.setPadding(8, 8, 8, 8); 
        btn.setFOcusable(false); 
        btn.setClickable(false); 
        }else { 
        btn = (Button) convertView; 
       }    
       btn.setText(filenames[position]);  
       btn.setTextColor(Color.WHITE); 
       btn.setId(position);  
       return btn; 
     } 
    }  
}