0

私は 12 個のボタンを持つ RelativeLayout を持っています。それらを画面の中央に配置し、互いに等距離で左右の余白を等しくしたいと考えています (電卓のボタンや電話のボタンなど)。私が行ったことはこの XML ファイルにあり、その結果は写真にありますが、まだ完全ではありません。これに対するより良い解決策はありますか?

ここに画像の説明を入力

 <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>
4

3 に答える 3

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" />
于 2012-07-31T22:58:14.593 に答える
1

RomainGuyのこのカスタムGridLayoutを使用できます。行と列の数を指定します。また、画面は同じサイズのセルに分割されます。

ここにリンクがあります

于 2012-07-31T23:46:36.413 に答える
0

私はついにボタンのグリッドビューでそれを成し遂げました。コードは次のとおりです。

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; 
        }
    }    
}
于 2012-08-01T13:56:42.803 に答える