【问题标题】:Listview scroll up when keyboard appear键盘出现时Listview向上滚动
【发布时间】:2017-05-25 02:39:40
【问题描述】:

我正在创建聊天应用程序。我想在键盘出现时或在屏幕内容已满的情况下在打字时向上滑动列表视图内容。顶部列表项像 WhatsApp 一样向上滑动。]1

我正在使用自定义工具栏,因此当我使用 android:windowSoftInputMode="adjustPan|adjustResize" 时,工具栏也会向上滑动。 公共类 MainActivity 扩展 AppCompatActivity 实现 View.OnClickListener {

    static int i=0;
    private boolean switch_layout;
    private ImageButton switch_msg_layout;
    private ArrayList<Message> messages;
    private Toolbar _toolbar;
    private ListView _send_msg_recyclerview;
    private EditText _msg;
    private ImageButton _send;

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

        initialize();
        switch_layout = true;
        switch_msg_layout.setImageResource(R.drawable.ic_uncheckbox);
        _toolbar.setFitsSystemWindows(true);
        setSupportActionBar(_toolbar);

        _send.setOnClickListener(this);
        switch_msg_layout.setOnClickListener(this);


    }

    private void initialize() {
        messages = new ArrayList<>();
        _toolbar = (Toolbar) findViewById(R.id.toolbar);
        _send_msg_recyclerview = (ListView) findViewById(R.id.out_msg_recyclerview);
        _msg = (EditText) findViewById(R.id.text);
        _send = (ImageButton) findViewById(R.id.btn);
        switch_msg_layout = (ImageButton) findViewById(R.id.switch_msg_layout);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.right_menu, menu);

        return true;
    }

    @Override
    public void onClick(View v) {

        String str = "";
        str = _msg.getText().toString();
        SimpleDateFormat sdf = new SimpleDateFormat("h:mm a");
        String currentDateandTime = sdf.format(new Date());

        switch (v.getId()) {

            case R.id.btn:

                setData(str, currentDateandTime,switch_layout);
                break;

            case R.id.switch_msg_layout:
                i++;
                if (!(i%2 ==0)){
                    switch_layout = false;
                    switch_msg_layout.setImageResource(R.drawable.ic_checkbox);
                }
                else {
                    switch_layout = true;
                    switch_msg_layout.setImageResource(R.drawable.ic_uncheckbox);
                }
                break;
        }


    }

    private void setData(String str, String currentTime,boolean switch_layout) {
        messages.add(new Message(str, currentTime,switch_layout));
        _send_msg_recyclerview.setAdapter(new MessageUIAdapter(this, messages));
        _msg.setText("");
    }
}

【问题讨论】:

  • 你能分享你的活动吗? android:windowSoftInputMode="adjustPan|adjustResize" 应该可以工作。你可能在 Activity 中做某事

标签: android android-layout


【解决方案1】:

在清单中的活动标签中

进行此更改 添加这个属性

android:windowSoftInputMode="adjustPan|adjustResize"

【讨论】:

    【解决方案2】:

    在java类中,如果是Activity,在onCreate中进行。如果是 Fragment,在 onViewCreated 中进行。

    ListView l = getListView();
    l.setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL);
    l.setStackFromBottom(true);
    

    或者在xml中,listview添加这个

    android:stackFromBottom="true"
    android:transcriptMode="normal"
    

    【讨论】:

    • 你会在你的答案中添加更多描述
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 2012-02-01
    • 1970-01-01
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    相关资源
    最近更新 更多