【问题标题】:Add textview right above Keyboard在键盘上方添加 textview
【发布时间】:2016-06-10 09:15:42
【问题描述】:

目前,我的应用由屏幕底部的EditText 和按钮组成。如果我在EditText 中输入内容,然后点击该按钮,则会在屏幕顶部创建TextView

但是,我想要实现的是,如果我点击那个按钮,TextView 会在 EditText 字段的正上方创建。如果我再次这样做,我希望再次在 EditText 上方创建第二个 TextView,但在另一个 TextView 下方创建。

这是我目前的代码。

这是 xml:(这都在 RelativeLayout 中。但由于某种原因,我不能把它放在这里,因为它没有被检测为代码......)

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/linearLayout"
    android:orientation="vertical" >
</LinearLayout>


<Button
    android:id="@+id/button"
    android:layout_width="100dp"
    android:layout_height="50dp"
    android:text="Senden"
    android:layout_gravity="center_horizontal"
    android:layout_alignBottom="@+id/editText"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true" />

<EditText
    android:layout_width="470px"
    android:layout_height="wrap_content"
    android:id="@+id/editText"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

还有我的活动:

public class MainActivity extends AppCompatActivity {

private Button button;
private EditText editText;
private LinearLayout linearLayout;


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

    linearLayout = (LinearLayout) findViewById(R.id.linearLayout);
    editText = (EditText) findViewById(R.id.editText);
    button = (Button) findViewById(R.id.button);

    final View.OnClickListener btnHandler = new View.OnClickListener() {
        public void onClick(View v) {
            String msg = editText.getText().toString();
            editText.getText().clear();
            linearLayout.addView(createNewTextView(msg));
            View view = getCurrentFocus();
            if(view != null) {
                InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
            }
        }
    };

    button.setOnClickListener(btnHandler);
}

private TextView createNewTextView(String text) {
    final LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    final TextView textView = new TextView(this);
    textView.setLayoutParams(lparams);
    textView.setTextColor(Color.BLACK);
    textView.setText(text);

    return textView;
}

我需要改变什么才能让它看起来像我想要的那样?

【问题讨论】:

    标签: android android-layout android-studio


    【解决方案1】:

    使用LinearLayout 作为父视图 android:gravity="center|bottom"此属性。

    现在在添加文本视图时,插入新创建的带有位置的文本视图。

    parentLinearLayout.addView(childtextview, index); //index represents it position in linearlayout,according to you index is always 2.
    

    【讨论】:

    • 当你说使用LinearLayout作为父视图时,你的意思是我应该用LinearLayout替换RelativLayout并将edittext和按钮放在里面吗?
    • 是的,Edittext 和 Button 将从底部获取前两个索引,因此每次插入 textview 时,将索引设置为 3
    • 所以我想我也不得不说:linearLayout.addView(button, 1) 和 linearLayout.addView(edittext, 1)。因为没有我的 Button 在顶部,而 edttext 在底部
    • 1 位于最底部,2 位于其上方,以此类推
    • 是的,我明白了。但是我现在如何告诉它我想要底部的 edttext 和按钮?
    【解决方案2】:

    对很多视图都有很好的控制:RecyclerView。使用 if 处理您的文本视图,并使用 LinearLayoutManager.setReverseLayout(true) 将视图放置在容器底部

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-13
      相关资源
      最近更新 更多