0

我有列表视图,其中的元素是在运行时添加的,即单击按钮。这是我的xml:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<ListView
    android:id="@+id/listView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_above="@+id/form"
    android:layout_alignParentTop="true" >
</ListView>

<RelativeLayout
    android:id="@+id/form"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:ems="10"
        android:inputType="text" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="Button" />

</RelativeLayout>

</RelativeLayout>

当我选择edittext时,键盘出现并且元素隐藏在键盘后面。当键盘出现时,我想要 listview moveup 的内容,以便我看到列表中的最后一个元素。

当我在按钮的 onclick 上添加一个列表元素时,该项目会被添加,但我必须向下滚动才能看到它。我希望它在添加元素时立即滚动到最后一个元素。

4

2 回答 2

1

尝试添加:

android:layout_alignParentBottom="true"

到您的 ListView,这应该在键盘弹出时将列表向上移动。

向下滚动到最后一个元素尝试:

int n= //number of elements in the list;

yourList.setSelection(n);
于 2013-06-12T16:43:52.677 回答
0

塔雷克是对的。但是在每个按钮 setOnClickListener() 和

在 onClickListeners 之外声明您的 counter int 变量,例如:

public class MyClass extends Fragment{

int arrayPosition = 0;//counter variable- set it to zero then increment in the buttons

public void onCreate(Bundle savedInstanceState){...}
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState){

    final ArrayAdapter<YourClass> yourAdapter = new YourAdapter();
    final ListView listView = (ListView)v.findViewById(R.id.imortant_list_view);
    listView.setAdapter(yourAdapter);

    myButtonsetOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                ...whatever you button does here

                arrayPosition++;
                listView.setSelection(arrayPosition);

    }

    });
}
于 2015-12-06T06:11:47.633 回答