全屏使用工具栏和底部android的edittext

时间:2016-12-26 09:01:36

标签: android android-edittext android-toolbar

我正在使用聊天应用Android。 我正在创建聊天屏幕,就像Whats app。

EditText位于底部,Toolbar位于顶部。

我正在使用以下代码。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/White"
android:id="@+id/llFrame">

<include layout="@layout/actionbar_chat"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/actionBarSize"
    android:background="@color/White"/>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffffff"
    android:fitsSystemWindows="true"
    android:orientation="vertical"
    android:layout_marginTop="?android:attr/actionBarSize"
    >

<android.support.v7.widget.RecyclerView
    android:id="@+id/recyclerViewChat"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_weight="0.8"
    android:divider="@null"
    android:dividerHeight="0dp"
    android:paddingBottom="10dp"
    android:text="@string/hello_world"
    android:layout_marginTop="@dimen/_5sdp"/>

<LinearLayout
    android:id="@+id/form"
    android:layout_width="match_parent"
    android:layout_height="@dimen/_35sdp"
    android:background="#91f1f1f1"
    android:orientation="horizontal"
    android:paddingBottom="2dp"
    android:gravity="center">

    <LinearLayout
        android:layout_width="0dp"
        android:layout_weight="0.8"
        android:layout_height="match_parent"
        android:layout_gravity="center_vertical"
        android:gravity="center_vertical"
        android:paddingRight="@dimen/_2sdp"
        android:paddingLeft="@dimen/_10sdp"
        android:paddingTop="@dimen/_2sdp"
        android:paddingBottom="@dimen/_2sdp"
        >

        <com.cloudzon.gratzeez1.property.CustomEditText
            android:id="@+id/etMessage"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:ems="10"
            android:background="@drawable/rectangle_"
            android:padding="@dimen/_2sdp"
            />

    </LinearLayout>

    <com.cloudzon.gratzeez1.property.CustomTextView
        android:id="@+id/tvSendMessage"
        android:layout_width="0dp"
        android:layout_weight="0.2"
        android:layout_height="match_parent"
        android:layout_margin="@dimen/_2sdp"
        android:text="Send"
        android:textSize="@dimen/_15sdp"
        android:layout_gravity="center"
        android:gravity="center"
        />
</LinearLayout>

    

要获得全屏活动,我在活动中使用以下代码。

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

现在,当我点击底部的EditText时,软键盘会打开,但将上面的布局推到顶部,我无法看到Toolbar

相反,一旦用户打开edittext,Toolbar就应该固定在他的位置。

谢谢

4 个答案:

答案 0 :(得分:2)

尝试更改

        android:windowSoftInputMode="adjustResize" 
当您声明添加此片段的活动时,

在清单中。

使用此布局 检查此布局是否按预期工作 只需根据需要进行修改

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

<LinearLayout
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:layout_alignParentTop="true"
    android:background="@color/calendar_background_color"
    android:orientation="vertical"></LinearLayout>

<android.support.v7.widget.RecyclerView
    android:id="@+id/dialog_recycler_view"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:layout_above="@+id/edit_query"
    android:layout_below="@+id/toolbar"></android.support.v7.widget.RecyclerView>

<EditText
    android:id="@+id/edit_query"
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:layout_alignParentBottom="true"
    android:background="@color/color_orange_event_text" />

答案 1 :(得分:2)

请参阅下面的聊天布局示例。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    android:clickable="true"
    android:orientation="vertical">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:layout_height="0dp">

        <LinearLayout
            android:id="@+id/linearSmsLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:paddingBottom="20dp"
            android:orientation="vertical">


            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="end"
                android:layout_marginBottom="10dp"
                android:layout_marginLeft="120dp"
                android:layout_marginRight="10dp"
                android:layout_marginTop="10dp"
                android:background="@drawable/ic_msg_icon_sender"
                android:text="This is long text for testing only. This is long text for testing only. This is long text for testing only. This is long text for testing only. This is long text for testing only." />

            <TextView
                android:id="@+id/txtReceiveMessage"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="start"
                android:layout_marginBottom="10dp"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="120dp"
                android:layout_marginTop="10dp"
                android:background="@drawable/ic_msg_icon_receiver"/>
        </LinearLayout>
    </ScrollView>

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@color/grey_400" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:orientation="horizontal">

        <EditText
            android:id="@+id/edtTxtSmsText"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginRight="10dp"
            android:layout_weight="1"
            android:background="@color/grey_400"
            android:hint="Write a message..."
            android:padding="10dp" />

        <ImageView
            android:id="@+id/btnSendSms"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_gravity="center"
            android:src="@drawable/ic_send_red" />

    </LinearLayout>

</LinearLayout>

并在android Manifeast文件中使用 android:windowSoftInputMode="adjustResize"

没有键盘。

enter image description here

使用键盘。

enter image description here

答案 2 :(得分:1)

试试这个:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/White"
    android:id="@+id/llFrame">

    <include
        android:id="@+id/tool"
        layout="@layout/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?android:attr/actionBarSize"
        android:background="@color/White"/>


        <android.support.v7.widget.RecyclerView
            android:id="@+id/recyclerViewChat"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:divider="@null"
            android:layout_below="@+id/tool"
            android:scrollbars="vertical"
            android:dividerHeight="0dp"
            android:paddingBottom="10dp"
            android:layout_marginTop="5dp"/>

        <LinearLayout
            android:id="@+id/form"
            android:layout_width="match_parent"
            android:layout_height="30dp"
            android:layout_alignParentBottom="true"
            android:background="#91f1f1f1"
            android:orientation="horizontal"
            android:paddingBottom="2dp"
            android:gravity="center">

            <LinearLayout
                android:layout_width="0dp"
                android:layout_weight="0.8"
                android:layout_height="match_parent"
                android:layout_gravity="center_vertical"
                android:gravity="center_vertical"
                >

                <EditText
                    android:id="@+id/etMessage"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:ems="10"
                    />

            </LinearLayout>

            <TextView
                android:id="@+id/tvSendMessage"
                android:layout_width="0dp"
                android:layout_weight="0.2"
                android:layout_height="match_parent"
                android:text="Send"
                android:layout_gravity="center"
                android:gravity="center"
                />
        </LinearLayout>

    </RelativeLayout>

答案 3 :(得分:1)

请在GitHub上查看此库: https://github.com/DeromirNeves/whatsapp-android