2016-07-26 15 views
0

単純なABCと123sアプリケーションを作成しようとしています。私の最初のレイアウトにはアルファベットと数字の2つのボタンがあります。アルファベットのボタンをクリックすると、すべてのアルファベット(A〜Z)の26個のボタンを保持する次のフラグメントに行きたいと思う。数字の場合、10個のボタン(0-9)。私の質問は、レイアウトファイルを26個のボタン/ 10個のボタンでXMLファイルに書き込むことなく効率的にレイアウトする方法です。1つのレイアウト画面に複数のボタンを作成する

+0

あなたは可能性がありますがグリッドレイアウトなどとボタンを築きます。 – lsiva

+0

どういう意味ですか? – Sai

+0

@lsivaユーザーが明確な質問を書くことを期待している限り、明確な回答とコメントも必要です。それは...意味がありません。 OP、これまでに試したコードをお見せしたい場合があります。 – Ares

答えて

0

利用のGridView

活動XML

<?xml version="1.0" encoding="utf-8"?> 
<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gridview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:columnWidth="90dp" 
    android:numColumns="auto_fit" 
    android:verticalSpacing="10dp" 
    android:horizontalSpacing="10dp" 
    android:stretchMode="columnWidth" 
    android:gravity="center" 
/> 

あなたの活動

public class MainActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     GridView gridview = (GridView) findViewById(R.id.gridview); 
     gridview.setAdapter(new GridAdapter (this)); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 
} 

GridViewのアダプタ

public class GridAdapter extends BaseAdapter { 
    private Context mContext; 

    // Constructor 
    public GridAdapter (Context c) { 
     mContext = c; 
    } 

    public int getCount() { 
     return alphabets.length; 
    } 

    public Object getItem(int position) { 
     return null; 
    } 

    public long getItemId(int position) { 
     return 0; 
    } 

    // create a new TextView for each item referenced by the Adapter 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     TextView txView; 

     if (convertView == null) { 
     txView= new TextView (mContext); 
     txView.setLayoutParams(new GridView.LayoutParams(85, 85)); 
     txView.setPadding(8, 8, 8, 8); 
     } 
     else 
     { 
     txView= (TextView) convertView; 
     } 
     txView.setText(alphabets[position]); 

     **Update** 
     txView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
      //your code here 
       switch(position){ 
       case 0: 
        Toast.makeText(this,"A",Toast.LENGTH_LONG).show(); 
       break; 
       case 1: 
        Toast.makeText(this,"B",Toast.LENGTH_LONG).show(); 
       break; 
       ........SoOn 
       } 

      }}); 


     return txView; 
    } 

    // array 
    public String[] alphabets= { 
     "A","B","C","D" 
    }; 
} 
+0

私はそれを実装して26個のボタンにすることができました。しかし、私は2つの質問があります:1)ボタンのサイズが小さく、サイズが変わっているようです.2)どのようにボタンのすべてにonClickListenersを追加しますか? – Sai

+0

txView.setLayoutParams(new GridView.LayoutParams(85、85)); //ここで幅と高さを変更します。更新された回答を表示します。これが役に立った場合、回答を受け入れてください – SaravInfern

+0

1つのonClickListenerがすべてのボタン?手紙/番号ごとに1つずつ必要なのでしょうか?なぜなら、それぞれのボタンを別々の文字にする必要があるからです。しかし、それらはビューページャーになるため、すべてが一種の接続でなければなりません。また、お世話になりました。ありがとうございました。答えを受け入れるのはどういう意味ですか? (私はそれをする評判があまりにも少ないと思う) – Sai

1

プログラムでビューにボタンを追加できます。フラグメントのonCreateView関数でこれを試してください。

//mView is your fragment root, and container is defined in XML 
LinearLayout container = (LinearLayout)mView.findViewById(R.id.alpha_container) 

String[] letters = {A, B, C, ..., Z}; 

for(int i=0; i<letters.length; i++) { 
    Button letter_btn = new Button(getActivity()); 
    letter.setText(letters[i]); 
    container.addView(letter_btn, i); 
} 

これは、プログラムで文字配列の各要素のボタンを作成します。 onClickListener(s)をそれに応じて付けることができ、ボタンをテキストコンテンツで追跡したり、タグ/ IDを与えたりすることができます。

+0

そのフラグメントのレイアウトファイルに何を含める必要がありますか? framelayout、recyclerview?何か? – Sai

+0

LinearLayout(または実際のViewGroup)で十分です。 – Jlange

+0

堅牢な機能セット(ボタンの追加や削除、多くのイベントの処理など)をお探しの場合は、アダプタ(GridView/Listviewなど)でビューを使用することをおすすめします。 @ SaravInfernの答えは完全に受け入れられます – Jlange

関連する問題