使用TableLayout,按钮偏离边缘



我正试图以编程方式制作一个TableLayout,我的第一行calling很好。但在我的第二行geo,按钮openGeo是离开屏幕的右边缘,即使我试图使用相同的加权逻辑,因为我做了第一行(Button需要任何空间,EditText s采取其余的)

我也试过

  • EditText s中移除权重-->同样的问题
  • 添加权重按钮openGeo ->同样的问题
  • 重新安排顺序(按钮首先出现,然后是EditText s) ->修复了边缘问题,但我希望按钮在结束

所以我知道屏幕能够支持所有5个View,因为重新排列顺序不会将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);
}

将一些条目放在外面的原因可能是因为一些文本比其他文本长,因此占用了更多的空间。为使权重正常工作,使用0dp而不是wrap_content的布局宽度

相关内容

  • 没有找到相关文章

最新更新