求教关于聊天界面开发中出现的问题

PogbaLiu 2016-07-28 09:04:49
本人是刚入门不久的新手,熟悉的东西不是特别多,今天在弄一个聊天界面时出现下面三个问题:
(1)就是当发送的信息文字比较多时会把头像给挤掉,不知道有什么办法处理这种问题
(2)怎么样能在各种情况下都能保证文字信息在背景图中始终保持竖直和水平方向的居中位置,因为.9.png格式的背景图片根据文字长度被拉长后总是会有一些情况下是不能居中的
其实上面两个问题也可以说是我们平常用的微信和qq这种聊天界面是怎么样处理我上面所描述的问题
(3)还有就是那个bottom navigationbar能不能在EditText获得焦点的时候隐藏,就是我们要输入信息的时候,下面那个bottom navigabar能不能隐藏,不然感觉很奇怪。因为下面那个bottom navigationbar我是引入github项目的,那个导航栏的源码比较多,我也不知道放出哪个,所以我就放出那个github项目的地址:https://github.com/Ashok-Varma/BottomNavigation


使用listview构建聊天界面,包含三个相关文件msg_item.xml、Msg.java、MsgAdapter.java,与界面布置有关的就是xml文件,所以我只放出了xml文件的代码,我也不清楚是不是java代码也能解决这个问题,还是只有通过xml属性来解决,github项目我是作为library引进自己的项目,这样java代码特别多,所以我就放出一些关键的代码,如果有哪位好心的大神有办法解决这个问题的,我想亲自加你qq求教。

msg_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp"
android:background="#EBEBEB">

<LinearLayout
android:id="@+id/left_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
>

<ImageView
android:id="@+id/left_msg_imageView"
android:layout_width="30dp"
android:layout_height="match_parent"
android:src="@drawable/g1"/>

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/message_left">

<TextView
android:id="@+id/left_msg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="6dp"
android:textColor="#505050"/>
</LinearLayout>


</LinearLayout>

<LinearLayout
android:id="@+id/right_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
>

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/message_right">

<TextView
android:id="@+id/right_msg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="2dp"
android:textColor="#505050"/>
</LinearLayout>

<ImageView
android:id="@+id/right_msg_imageView"
android:layout_width="30dp"
android:layout_height="match_parent"
android:src="@drawable/g2"
/>
</LinearLayout>

</LinearLayout>


MainActivity.java
package com.example.wangchang.testbottomnavigationbar;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.ashokvarma.bottomnavigation.BottomNavigationBar;
import com.ashokvarma.bottomnavigation.BottomNavigationItem;
import java.util.ArrayList;


public class MainActivity extends AppCompatActivity implements BottomNavigationBar.OnTabSelectedListener {
private ArrayList<Fragment> fragments;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BottomNavigationBar bottomNavigationBar = (BottomNavigationBar) findViewById(R.id.bottom_navigation_bar);
bottomNavigationBar.setMode(BottomNavigationBar.MODE_FIXED);
bottomNavigationBar
.setBackgroundStyle(BottomNavigationBar.BACKGROUND_STYLE_STATIC);
bottomNavigationBar.addItem(new BottomNavigationItem(R.mipmap.ic_home_white_24dp, "首页").setActiveColorResource(R.color.orange))
.addItem(new BottomNavigationItem(R.mipmap.ic_music_note_white_24dp, "活动").setActiveColorResource(R.color.blue))
.addItem(new BottomNavigationItem(R.mipmap.ic_book_white_24dp, "咨询").setActiveColorResource(R.color.teal))
.addItem(new BottomNavigationItem(R.mipmap.ic_tv_white_24dp, "我").setActiveColorResource(R.color.brown))
.setFirstSelectedPosition(0)
.initialise();

fragments = getFragments();
setDefaultFragment();
bottomNavigationBar.setTabSelectedListener(this);
}

/**
* 设置默认的
*/
private void setDefaultFragment() {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
transaction.replace(R.id.layFrame, RecommendationFragment.newInstance("首页"));
transaction.commit();
}

private ArrayList<Fragment> getFragments() {
ArrayList<Fragment> fragments = new ArrayList<>();
fragments.add(RecommendationFragment.newInstance("首页"));
fragments.add(ActivityFragment.newInstance("活动"));
fragments.add(ConsultFragment.newInstance("咨询"));
fragments.add(AboutFragment.newInstance("我"));
return fragments;
}

@Override
public void onTabSelected(int position) {
if (fragments != null) {
if (position < fragments.size()) {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
Fragment fragment = fragments.get(position);
if (fragment.isAdded()) {
ft.add(R.id.layFrame, fragment);
} else {
ft.replace(R.id.layFrame, fragment);
}
ft.commitAllowingStateLoss();
}
}

}

@Override
public void onTabUnselected(int position) {
if (fragments != null) {
if (position < fragments.size()) {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
Fragment fragment = fragments.get(position);
ft.remove(fragment);
ft.commitAllowingStateLoss();
}
}
}

@Override
public void onTabReselected(int position) {
}

}


这是出现问题的界面情况



这是项目结构图


我向各位大神真心求教,谢谢!
...全文
238 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
PogbaLiu 2016-10-27
  • 打赏
  • 举报
回复
引用 10 楼 Mailbomb 的回复:
.9.png文件处理的有问题,左右留的间隙不一样,文字TextView再加一个android:gravity="center"即可
确实是这个问题
PogbaLiu 2016-07-29
  • 打赏
  • 举报
回复
引用 1 楼 xjz729827161 的回复:
针对你的问题一点点给出建议: 1.头像的宽高应该事先就设置好的,而用于输入文字的文本框就应该限制其最大的宽度(屏幕宽度 - 头像宽度),或者你在xml代码中直接指定文本框margin左或者右的距离(距离为头像宽度略大) 2.对齐这个就需要慢慢调了,不过可以给你一些建议,你去掉TextView外层包裹的LinearLayout,针对textView设置边距的用pading属性。这里其实还有一个问题,聊天肯定是要支持emoji的,这个你如果展示呢?终究还是实现一个TextView 的子类的 3.这个本来是可以监听键盘的弹出和收起来决定bottomNavigationBar的显示隐藏的。但是我这里效果不怎么好,换了一个方式, 用根布局rootView.addOnLayoutChangeListener(this);当前Activity实现View.OnLayoutChangeListener接口,接口中代码如下: if (oldBottom != 0 && bottom != 0 && (oldBottom - bottom > keyHeight)) { //键盘弹出时,隐藏下面导航栏 bottomNavigationBar.setVisibility.(View.GONE) } else if (oldBottom != 0 && bottom != 0 && (bottom - oldBottom > keyHeight)) { //键盘收起时,显示下面导航栏 bottomNavigationBar.setVisibility.(View.VISIABLE) } 这个keyHeight可以设置为屏幕的三分之一的高度。
你好,请问那个keyheight需要通过API获取吗,还是直接声明就可以
网络咖啡 2016-07-29
  • 打赏
  • 举报
回复
.9.png文件处理的有问题,左右留的间隙不一样,文字TextView再加一个android:gravity="center"即可
xjz729827161 2016-07-29
  • 打赏
  • 举报
回复
引用 8 楼 qq_29838777 的回复:
[quote=引用 5 楼 xjz729827161 的回复:] [quote=引用 4 楼 qq_29838777 的回复:] [quote=引用 3 楼 xjz729827161 的回复:] [quote=引用 2 楼 qq_29838777 的回复:] [quote=引用 1 楼 xjz729827161 的回复:] 针对你的问题一点点给出建议: 1.头像的宽高应该事先就设置好的,而用于输入文字的文本框就应该限制其最大的宽度(屏幕宽度 - 头像宽度),或者你在xml代码中直接指定文本框margin左或者右的距离(距离为头像宽度略大) 2.对齐这个就需要慢慢调了,不过可以给你一些建议,你去掉TextView外层包裹的LinearLayout,针对textView设置边距的用pading属性。这里其实还有一个问题,聊天肯定是要支持emoji的,这个你如果展示呢?终究还是实现一个TextView 的子类的 3.这个本来是可以监听键盘的弹出和收起来决定bottomNavigationBar的显示隐藏的。但是我这里效果不怎么好,换了一个方式, 用根布局rootView.addOnLayoutChangeListener(this);当前Activity实现View.OnLayoutChangeListener接口,接口中代码如下: if (oldBottom != 0 && bottom != 0 && (oldBottom - bottom > keyHeight)) { //键盘弹出时,隐藏下面导航栏 bottomNavigationBar.setVisibility.(View.GONE) } else if (oldBottom != 0 && bottom != 0 && (bottom - oldBottom > keyHeight)) { //键盘收起时,显示下面导航栏 bottomNavigationBar.setVisibility.(View.VISIABLE) } 这个keyHeight可以设置为屏幕的三分之一的高度。
你好,请问那个keyheight需要通过API获取吗,还是直接声明就可以[/quote] keyHeight是自己定义的变量,为屏幕的三分之一高度,获取的屏幕的高度 screenHeight = this.getWindowManager().getDefaultDisplay().getHeight();[/quote]你好,我根据你的方法把它写入我的MainActivity中,如图所示 可是报出错误07-29 14:18:29.947 32378-4938/com.android.phone E/DatabaseUtils: Writing exception to parcel java.lang.SecurityException: No permission to write APN settings at com.android.providers.telephony.TelephonyProvider.checkPermission(TelephonyProvider.java:1219) at com.android.providers.telephony.TelephonyProvider.query(TelephonyProvider.java:809) at android.content.ContentProvider.query(ContentProvider.java:1000) at android.content.ContentProvider$Transport.query(ContentProvider.java:214) at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:112) at android.os.Binder.execTransact(Binder.java:446)[/quote] 1:this.getWindowManager().getDefaultDisplay().getHeight() 这个方法的this指的是context ,需要放在onCreate里面做 2.rootView是这样的: 把你是setContentView(R.layout.activity_main)改成如下: ViewGroup rootView = rootView = (ViewGroup) LayoutInflater.from(R.layout.activity_main, null); setContentView(rootView );[/quote] 那个LayoutInflater.from()报错,不知道是哪里的问题[/quote] 代码是凭我记忆写的,没有在IDE里面敲过,你不能完全照着抄的,我只是说明是这个形式的,应该是这样的吧LayoutInflate.from(this).infalte(R.layout.activity_main,null),填充一个布局你不知道么?你也可以通过IDE的检查功能自己看看啊
xjz729827161 2016-07-29
  • 打赏
  • 举报
回复
针对你的问题一点点给出建议: 1.头像的宽高应该事先就设置好的,而用于输入文字的文本框就应该限制其最大的宽度(屏幕宽度 - 头像宽度),或者你在xml代码中直接指定文本框margin左或者右的距离(距离为头像宽度略大) 2.对齐这个就需要慢慢调了,不过可以给你一些建议,你去掉TextView外层包裹的LinearLayout,针对textView设置边距的用pading属性。这里其实还有一个问题,聊天肯定是要支持emoji的,这个你如果展示呢?终究还是实现一个TextView 的子类的 3.这个本来是可以监听键盘的弹出和收起来决定bottomNavigationBar的显示隐藏的。但是我这里效果不怎么好,换了一个方式, 用根布局rootView.addOnLayoutChangeListener(this);当前Activity实现View.OnLayoutChangeListener接口,接口中代码如下: if (oldBottom != 0 && bottom != 0 && (oldBottom - bottom > keyHeight)) { //键盘弹出时,隐藏下面导航栏 bottomNavigationBar.setVisibility.(View.GONE) } else if (oldBottom != 0 && bottom != 0 && (bottom - oldBottom > keyHeight)) { //键盘收起时,显示下面导航栏 bottomNavigationBar.setVisibility.(View.VISIABLE) } 这个keyHeight可以设置为屏幕的三分之一的高度。
PogbaLiu 2016-07-29
  • 打赏
  • 举报
回复
引用 5 楼 xjz729827161 的回复:
[quote=引用 4 楼 qq_29838777 的回复:]
[quote=引用 3 楼 xjz729827161 的回复:]
[quote=引用 2 楼 qq_29838777 的回复:]
[quote=引用 1 楼 xjz729827161 的回复:]
针对你的问题一点点给出建议:
1.头像的宽高应该事先就设置好的,而用于输入文字的文本框就应该限制其最大的宽度(屏幕宽度 - 头像宽度),或者你在xml代码中直接指定文本框margin左或者右的距离(距离为头像宽度略大)
2.对齐这个就需要慢慢调了,不过可以给你一些建议,你去掉TextView外层包裹的LinearLayout,针对textView设置边距的用pading属性。这里其实还有一个问题,聊天肯定是要支持emoji的,这个你如果展示呢?终究还是实现一个TextView 的子类的
3.这个本来是可以监听键盘的弹出和收起来决定bottomNavigationBar的显示隐藏的。但是我这里效果不怎么好,换了一个方式, 用根布局rootView.addOnLayoutChangeListener(this);当前Activity实现View.OnLayoutChangeListener接口,接口中代码如下:
if (oldBottom != 0 && bottom != 0 && (oldBottom - bottom > keyHeight)) {
//键盘弹出时,隐藏下面导航栏
bottomNavigationBar.setVisibility.(View.GONE)
} else if (oldBottom != 0 && bottom != 0 && (bottom - oldBottom > keyHeight)) {
//键盘收起时,显示下面导航栏
bottomNavigationBar.setVisibility.(View.VISIABLE)
}
这个keyHeight可以设置为屏幕的三分之一的高度。
你好,请问那个keyheight需要通过API获取吗,还是直接声明就可以[/quote]
keyHeight是自己定义的变量,为屏幕的三分之一高度,获取的屏幕的高度

screenHeight = this.getWindowManager().getDefaultDisplay().getHeight();[/quote]你好,我根据你的方法把它写入我的MainActivity中,如图所示

可是报出错误07-29 14:18:29.947 32378-4938/com.android.phone E/DatabaseUtils: Writing exception to parcel
java.lang.SecurityException: No permission to write APN settings
at com.android.providers.telephony.TelephonyProvider.checkPermission(TelephonyProvider.java:1219)
at com.android.providers.telephony.TelephonyProvider.query(TelephonyProvider.java:809)
at android.content.ContentProvider.query(ContentProvider.java:1000)
at android.content.ContentProvider$Transport.query(ContentProvider.java:214)
at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:112)
at android.os.Binder.execTransact(Binder.java:446)
[/quote]

1:this.getWindowManager().getDefaultDisplay().getHeight()
这个方法的this指的是context ,需要放在onCreate里面做
2.rootView是这样的:
把你是setContentView(R.layout.activity_main)改成如下:
ViewGroup rootView = rootView = (ViewGroup) LayoutInflater.from(R.layout.activity_main, null);
setContentView(rootView );[/quote]
那个LayoutInflater.from()报错,不知道是哪里的问题
assky124 2016-07-29
  • 打赏
  • 举报
回复
用RecycleView或者 ListView加载这两种 ItemView就行了
assky124 2016-07-29
  • 打赏
  • 举报
回复
太长,不想看
im_message_text_item_right.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="@drawable/im_messagelist_back"
android:layout_height="48dp" android:paddingLeft="72dp"
android:paddingRight="16dp" android:minHeight="48dp">
<my.CircleImageView android:layout_width="40dp" android:layout_height="40dp" android:src="@drawable/ib_user_default"
android:id="@+id/imageView"
android:layout_marginTop="4dp" android:layout_alignParentRight="true"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello"
android:background="@drawable/ib_bubble_right" android:textColor="#000" android:minHeight="40dp"
android:layout_toLeftOf="@+id/imageView" android:layout_centerVertical="true"
android:layout_marginRight="4dp" android:textSize="14sp" android:gravity="center|left" android:id="@+id/tv_SubTitle"/>
</RelativeLayout>


im_message_text_item_left.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:background="@drawable/im_messagelist_back"
android:layout_height="48dp" android:paddingLeft="16dp" android:paddingRight="72dp" android:minHeight="48dp">
<my.CircleImageView android:layout_width="40dp" android:layout_height="40dp" android:src="@drawable/ib_user_default"
android:id="@+id/imageView" android:layout_marginTop="4dp"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello"
android:layout_toRightOf="@+id/imageView" android:layout_centerVertical="true"
android:layout_marginLeft="4dp" android:background="@drawable/ib_bubble_left" android:textColor="#fff" android:minHeight="40dp"
android:textSize="14sp" android:id="@+id/tv_SubTitle" android:gravity="left|center"/>
</RelativeLayout>


xjz729827161 2016-07-29
  • 打赏
  • 举报
回复
引用 4 楼 qq_29838777 的回复:
[quote=引用 3 楼 xjz729827161 的回复:] [quote=引用 2 楼 qq_29838777 的回复:] [quote=引用 1 楼 xjz729827161 的回复:] 针对你的问题一点点给出建议: 1.头像的宽高应该事先就设置好的,而用于输入文字的文本框就应该限制其最大的宽度(屏幕宽度 - 头像宽度),或者你在xml代码中直接指定文本框margin左或者右的距离(距离为头像宽度略大) 2.对齐这个就需要慢慢调了,不过可以给你一些建议,你去掉TextView外层包裹的LinearLayout,针对textView设置边距的用pading属性。这里其实还有一个问题,聊天肯定是要支持emoji的,这个你如果展示呢?终究还是实现一个TextView 的子类的 3.这个本来是可以监听键盘的弹出和收起来决定bottomNavigationBar的显示隐藏的。但是我这里效果不怎么好,换了一个方式, 用根布局rootView.addOnLayoutChangeListener(this);当前Activity实现View.OnLayoutChangeListener接口,接口中代码如下: if (oldBottom != 0 && bottom != 0 && (oldBottom - bottom > keyHeight)) { //键盘弹出时,隐藏下面导航栏 bottomNavigationBar.setVisibility.(View.GONE) } else if (oldBottom != 0 && bottom != 0 && (bottom - oldBottom > keyHeight)) { //键盘收起时,显示下面导航栏 bottomNavigationBar.setVisibility.(View.VISIABLE) } 这个keyHeight可以设置为屏幕的三分之一的高度。
你好,请问那个keyheight需要通过API获取吗,还是直接声明就可以[/quote] keyHeight是自己定义的变量,为屏幕的三分之一高度,获取的屏幕的高度 screenHeight = this.getWindowManager().getDefaultDisplay().getHeight();[/quote]你好,我根据你的方法把它写入我的MainActivity中,如图所示 可是报出错误07-29 14:18:29.947 32378-4938/com.android.phone E/DatabaseUtils: Writing exception to parcel java.lang.SecurityException: No permission to write APN settings at com.android.providers.telephony.TelephonyProvider.checkPermission(TelephonyProvider.java:1219) at com.android.providers.telephony.TelephonyProvider.query(TelephonyProvider.java:809) at android.content.ContentProvider.query(ContentProvider.java:1000) at android.content.ContentProvider$Transport.query(ContentProvider.java:214) at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:112) at android.os.Binder.execTransact(Binder.java:446)[/quote] 1:this.getWindowManager().getDefaultDisplay().getHeight() 这个方法的this指的是context ,需要放在onCreate里面做 2.rootView是这样的: 把你是setContentView(R.layout.activity_main)改成如下: ViewGroup rootView = rootView = (ViewGroup) LayoutInflater.from(R.layout.activity_main, null); setContentView(rootView );
PogbaLiu 2016-07-29
  • 打赏
  • 举报
回复
引用 3 楼 xjz729827161 的回复:
[quote=引用 2 楼 qq_29838777 的回复:]
[quote=引用 1 楼 xjz729827161 的回复:]
针对你的问题一点点给出建议:
1.头像的宽高应该事先就设置好的,而用于输入文字的文本框就应该限制其最大的宽度(屏幕宽度 - 头像宽度),或者你在xml代码中直接指定文本框margin左或者右的距离(距离为头像宽度略大)
2.对齐这个就需要慢慢调了,不过可以给你一些建议,你去掉TextView外层包裹的LinearLayout,针对textView设置边距的用pading属性。这里其实还有一个问题,聊天肯定是要支持emoji的,这个你如果展示呢?终究还是实现一个TextView 的子类的
3.这个本来是可以监听键盘的弹出和收起来决定bottomNavigationBar的显示隐藏的。但是我这里效果不怎么好,换了一个方式, 用根布局rootView.addOnLayoutChangeListener(this);当前Activity实现View.OnLayoutChangeListener接口,接口中代码如下:
if (oldBottom != 0 && bottom != 0 && (oldBottom - bottom > keyHeight)) {
//键盘弹出时,隐藏下面导航栏
bottomNavigationBar.setVisibility.(View.GONE)
} else if (oldBottom != 0 && bottom != 0 && (bottom - oldBottom > keyHeight)) {
//键盘收起时,显示下面导航栏
bottomNavigationBar.setVisibility.(View.VISIABLE)
}
这个keyHeight可以设置为屏幕的三分之一的高度。
你好,请问那个keyheight需要通过API获取吗,还是直接声明就可以[/quote]
keyHeight是自己定义的变量,为屏幕的三分之一高度,获取的屏幕的高度

screenHeight = this.getWindowManager().getDefaultDisplay().getHeight();[/quote]你好,我根据你的方法把它写入我的MainActivity中,如图所示

可是报出错误07-29 14:18:29.947 32378-4938/com.android.phone E/DatabaseUtils: Writing exception to parcel
java.lang.SecurityException: No permission to write APN settings
at com.android.providers.telephony.TelephonyProvider.checkPermission(TelephonyProvider.java:1219)
at com.android.providers.telephony.TelephonyProvider.query(TelephonyProvider.java:809)
at android.content.ContentProvider.query(ContentProvider.java:1000)
at android.content.ContentProvider$Transport.query(ContentProvider.java:214)
at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:112)
at android.os.Binder.execTransact(Binder.java:446)
xjz729827161 2016-07-29
  • 打赏
  • 举报
回复
引用 2 楼 qq_29838777 的回复:
[quote=引用 1 楼 xjz729827161 的回复:] 针对你的问题一点点给出建议: 1.头像的宽高应该事先就设置好的,而用于输入文字的文本框就应该限制其最大的宽度(屏幕宽度 - 头像宽度),或者你在xml代码中直接指定文本框margin左或者右的距离(距离为头像宽度略大) 2.对齐这个就需要慢慢调了,不过可以给你一些建议,你去掉TextView外层包裹的LinearLayout,针对textView设置边距的用pading属性。这里其实还有一个问题,聊天肯定是要支持emoji的,这个你如果展示呢?终究还是实现一个TextView 的子类的 3.这个本来是可以监听键盘的弹出和收起来决定bottomNavigationBar的显示隐藏的。但是我这里效果不怎么好,换了一个方式, 用根布局rootView.addOnLayoutChangeListener(this);当前Activity实现View.OnLayoutChangeListener接口,接口中代码如下: if (oldBottom != 0 && bottom != 0 && (oldBottom - bottom > keyHeight)) { //键盘弹出时,隐藏下面导航栏 bottomNavigationBar.setVisibility.(View.GONE) } else if (oldBottom != 0 && bottom != 0 && (bottom - oldBottom > keyHeight)) { //键盘收起时,显示下面导航栏 bottomNavigationBar.setVisibility.(View.VISIABLE) } 这个keyHeight可以设置为屏幕的三分之一的高度。
你好,请问那个keyheight需要通过API获取吗,还是直接声明就可以[/quote] keyHeight是自己定义的变量,为屏幕的三分之一高度,获取的屏幕的高度 screenHeight = this.getWindowManager().getDefaultDisplay().getHeight();

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧