2016-08-16 3 views
1

プログラムでTableLayoutを作成しようとしていますが、最初の行callingは問題ありません。しかし、私の2行目のgeoでは、ボタンopenGeoが画面の右端から外れていますが、最初の行と同じ重み付けロジックを使用しようとしましたが(Buttonは必要なスペースをとります。EditTextは残りを取る)TableLayoutを使用すると、Buttonがエッジから外れます

IもEditText Sからウェイトを取り外し

  • を試してみた - >同じ問題
  • ボタンopenGeoに重みを追加 - 順番を並べ替え>同じ問題
  • (ボタンが来るまず、その後、EditText S) - >オフに行くエッジの問題を修正しますが、私は最後

のボタンをしたいので、私は順番を並べ替えるための画面がこれらView秒のすべての5を支持することが可能である知っていますEditTextをエッジから押し出すことはありません。どうすればこの注文を維持できますか?

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_interact_ui); 

    TableLayout layout = (TableLayout)findViewById(R.id.interactUILayout); 
    TableRow calling = new TableRow(this); 
    TableRow geo = new TableRow(this); 

    final EditText number = new EditText(this); 
    number.setInputType(EditorInfo.TYPE_CLASS_PHONE); 
    number.setHint("###-###-####"); 

    Button call = new Button(this); 
    call.setText("Call"); 
    call.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      call(number.getText().toString()); 
     } 
    }); 

    final EditText address = new EditText(this); 
    address.setHint("Address"); 

    final EditText street = new EditText(this); 
    street.setHint("Street"); 

    final EditText city = new EditText(this); 
    city.setHint("City"); 

    final EditText state = new EditText(this); 
    state.setHint("State"); 

    Button openGeo = new Button(this); 
    openGeo.setText("Maps"); 
    openGeo.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      openGeo(address.getText().toString(),street.getText().toString(), city.getText().toString(), state.getText().toString()); 
     } 
    }); 

    calling.addView(number, new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT, 1f)); 
    calling.addView(call); 
    geo.addView(address, new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT, 1f)); 
    geo.addView(street, new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT, 1f)); 
    geo.addView(city, new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT, 1f)); 
    geo.addView(state, new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT, 1f)); 
    geo.addView(openGeo); 
    layout.addView(calling); 
    layout.addView(geo); 
} 

答えて

0

一部のテキストが他のテキストより長くなる理由は、一部のテキストが他のテキストより長くなり、より多くのスペースを占めるためです。ウェイトが正しく機能するには、wrap_contentの代わりに0dpのレイアウト幅を使用します。

+1

私は帰宅したらあなたの提案をお試ししますが、この背後にある理由を説明してもらえますか?なぜなら、もし私がそうでなければ、スペースがなくなってしまう理由がわからないからです。また、ウェイトを使用する場合は、幅が0になるように、今後もこのルールに常に注意する必要がありますか?おかげさまで –

関連する問題