android - 以编程方式 : Android ListView at top and EditText & Button at bottom

标签 android android-layout

这是我目前的代码。我应该更改什么以使其看起来像下面的 ASCII 艺术?

private RelativeLayout mMainLayout;
private LinearLayout mButtonLayout;
private ListView mListView;
private EditText mMessageInput;
private Button mSendButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mMainLayout = new RelativeLayout(this);
    mMainLayout.setLayoutParams(new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.MATCH_PARENT,
    LinearLayout.LayoutParams.MATCH_PARENT));
    setContentView(mMainLayout);
    mMainLayout.setGravity(Gravity.BOTTOM);

    mListView = new ListView(this);
    mMainLayout.addView(mListView, 0);

    mButtonLayout = new LinearLayout(this);
    mButtonLayout.setLayoutParams(new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.MATCH_PARENT,
    LinearLayout.LayoutParams.WRAP_CONTENT, 2f));
    mMessageInput = new EditText(this);
    mMessageInput.setMinimumHeight(200);
    mButtonLayout.addView(mMessageInput, 0);

    mSendButton = new Button(this);
    mSendButton.setText(R.string.send);
    mSendButton.setOnClickListener(this);
    mButtonLayout.addView(mSendButton, 1);
    mMainLayout.addView(mButtonLayout, 1);
}


-------------------------
|ListView               |
|                       |
|                       |
|                       |
|                       |
|                       |
|                       |
|                       |
|                       |
-------------------------
| EditText      |Button |
-------------------------

最佳答案

private LinearLayout mMainLayout;
private LinearLayout mButtonLayout;
private ListView mListView;
private EditText mMessageInput;
private Button mSendButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mMainLayout = new LinearLayout(this);
mMainLayout.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT));
mMainLayout.setOrientation(LinearLayout.VERTICAL);
setContentView(mMainLayout);
mMainLayout.setGravity(Gravity.BOTTOM);

mButtonLayout = new LinearLayout(this);
mButtonLayout.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT, 2f));
mMessageInput = new EditText(this);
mMessageInput.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT, 1f));
mButtonLayout.addView(mMessageInput, 0);

mSendButton = new Button(this);
mSendButton.setText(R.string.send);
mSendButton.setOnClickListener(this);
mSendButton.setLayoutParams(new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT, 3f));
mSendButton.setMinHeight(300);
mButtonLayout.addView(mSendButton, 1);
mMainLayout.addView(mButtonLayout, 1);

mListView = new ListView(this);
mListView.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT, 1f));
mMainLayout.addView(mListView, 0);

您应该像上面的代码一样从下到上进行布局。 所以首先在布局中添加底部两个按钮,然后添加 ListView 。 希望对您有所帮助。

关于android - 以编程方式 : Android ListView at top and EditText & Button at bottom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17689003/

相关文章:

android studio 3.0 设备资源管理器 - 运行为 : could not set capabilities: Operation not permitted

android - Chrome 自定义标签不会返回到应用

android - 使用 LayoutInflater 创建自定义菜单,如何引用每个组件?

java - android.support.design.widget.CoordinatorLayout 的渲染问题

android - 设置包含布局的子元素的属性

android - Android 库项目可以遗漏什么

java - Java : Cross Platform Issues? 中的 RSA 加密

android - flutter Android资源链接失败@mipmap/ic_launcher未找到

android - RecyclerView 内的 ScrollView 不会滚动

android-layout - addView方法动态添加View时onDraw调用两次