当前位置: 动力学知识库 > 问答 > 编程问答 >

android - Add textview right above Keyboard

问题描述:

At the moment my app consists from a EditText and a button, both at the bottom of the screen. If I'm typing something into the EditText and than hit that button a TextView gets created at the top of the screen.

But, what I want to achieve is that if I hit that button, that the TextView gets created right above the EditText field. And if I do that again I want the second TextView again created right above the EditText but below the other TextView.

This is my code so far.

Here's the xml: (This is all inside a RelativeLayout. But for some reason I can't put that in here because its not detected as code...)

<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" />

And my Activity:

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;

}

What do I need to change so that it appears like i want it to?

网友答案:

Use LinearLayout as parent view with android:gravity="center|bottom" this property.

Now while adding textviews, insert newly created text view with position.

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

There is nice control for a lot of views: RecyclerView. Use if for handling your text views, and use LinearLayoutManager.setReverseLayout(true) for placing views in the bottom of container

分享给朋友:
您可能感兴趣的文章:
随机阅读: