add Blick über Tastatur android
in meiner android-Anwendung habe ich ein chat-Aktivität ,nutze ich diesen code aus android-chat-starter
problem mit dem emulator funktioniert alles einwandfrei , getestet habe ich es in vielen Arten von Emulatoren (api >18 , api =18 , api <18)
aber in der Prüfung in der tatsächlichen Gerät, verhält es sich wie in diesem Bild
emoji-Ansicht zeigt oben die Tastatur
hier ist der code, den ich verwenden, um zu zeigen, die emoji-Ansicht
private void showEmojiPopup(boolean show) {
showingEmoji = show;
if (show) {
if (emojiView == null) {
if (getActivity() == null) {
return;
}
emojiView = new EmojiView(getActivity());
emojiView.setListener(new EmojiView.Listener() {
public void onBackspace() {
chatEditText1.dispatchKeyEvent(new KeyEvent(0, 67));
}
public void onEmojiSelected(String symbol) {
int i = chatEditText1.getSelectionEnd();
if (i < 0) {
i = 0;
}
try {
CharSequence localCharSequence = Emoji.replaceEmoji(symbol, chatEditText1.getPaint().getFontMetricsInt(), AndroidUtilities.dp(20));
chatEditText1.setText(chatEditText1.getText().insert(i, localCharSequence));
int j = i + localCharSequence.length();
chatEditText1.setSelection(j, j);
} catch (Exception e) {
Log.e(Constants.TAG, "Error showing emoji");
}
}
});
windowLayoutParams = new WindowManager.LayoutParams();
windowLayoutParams.gravity = Gravity.BOTTOM | Gravity.LEFT;
Log.d(TAG ,Build.VERSION.SDK_INT + " ");
if (Build.VERSION.SDK_INT >= 21) {
windowLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
} else {
windowLayoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_PANEL;
windowLayoutParams.token = getActivity().getWindow().getDecorView().getWindowToken();
}
windowLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
Log.d("emoj",WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE + "");
}
final int currentHeight;
if (keyboardHeight <= 0)
keyboardHeight = App.getInstance().getSharedPreferences("emoji", 0).getInt("kbd_height", AndroidUtilities.dp(200));
currentHeight = keyboardHeight;
WindowManager wm = (WindowManager) App.getInstance().getSystemService(Activity.WINDOW_SERVICE);
windowLayoutParams.height = currentHeight;
windowLayoutParams.width = AndroidUtilities.displaySize.x;
try {
if (emojiView.getParent() != null) {
wm.removeViewImmediate(emojiView);
}
} catch (Exception e) {
Log.e(Constants.TAG, e.getMessage());
}
try {
wm.addView(emojiView, windowLayoutParams);
} catch (Exception e) {
Log.e(Constants.TAG, e.getMessage());
return;
}
if (!keyboardVisible) {
if (sizeNotifierRelativeLayout != null) {
sizeNotifierRelativeLayout.setPadding(0, 0, 0, currentHeight);
}
return;
}
} else {
removeEmojiWindow();
if (sizeNotifierRelativeLayout != null) {
sizeNotifierRelativeLayout.post(new Runnable() {
public void run() {
if (sizeNotifierRelativeLayout != null) {
sizeNotifierRelativeLayout.setPadding(0, 0, 0, 0);
}
}
});
}
}
}
@Override
public void onSizeChanged(int height) {
Rect localRect = new Rect();
getActivity().getWindow().getDecorView().getWindowVisibleDisplayFrame(localRect);
WindowManager wm = (WindowManager) App.getInstance().getSystemService(Activity.WINDOW_SERVICE);
if (wm == null || wm.getDefaultDisplay() == null) {
return;
}
if (height > AndroidUtilities.dp(50) && keyboardVisible) {
keyboardHeight = height;
App.getInstance().getSharedPreferences("emoji", 0).edit().putInt("kbd_height", keyboardHeight).commit();
}
if (showingEmoji) {
int newHeight = 0;
newHeight = keyboardHeight;
if (windowLayoutParams.width != AndroidUtilities.displaySize.x || windowLayoutParams.height != newHeight) {
windowLayoutParams.width = AndroidUtilities.displaySize.x;
windowLayoutParams.height = newHeight;
wm.updateViewLayout(emojiView, windowLayoutParams);
if (!keyboardVisible) {
sizeNotifierRelativeLayout.post(new Runnable() {
@Override
public void run() {
if (sizeNotifierRelativeLayout != null) {
sizeNotifierRelativeLayout.setPadding(0, 0, 0, windowLayoutParams.height);
sizeNotifierRelativeLayout.requestLayout();
}
}
});
}
}
}
meine androidmanifest.xml enthält
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<activity
android:name=".ConversationShowActivity"
android:screenOrientation="portrait"
android:label="@string/title_activity_conversation_show"
android:launchMode="singleTask"
android:parentActivityName=".MainActivity"
android:theme="@style/AppTheme"
android:windowSoftInputMode="adjustResize" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.exampel.myapp.MainActivity" />
</activity>
hier ist mein Gespräch zeigen, xml
<com.example.myapp.widgets.SizeNotifierRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:id="@+id/chat_layout"
android:layout_height="match_parent"
android:background="@color/white"
xmlns:fontawesometext="http://schemas.android.com/apk/res-auto"
xmlns:bootstrap="http://schemas.android.com/apk/res-auto"
tools:context="com.example.myapp.ConversationShowActivity">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/errorLayout"
android:layout_gravity="center"
android:layout_centerVertical="true"
android:visibility="invisible"
tools:visibilty="invisible"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="5dp"
android:text="Error loading conversation messages, Click here to try again"
android:id="@+id/textView3"
android:textColor="#ffff4314"
android:textSize="20sp"
android:textStyle="bold"/>
</LinearLayout>
<ProgressBar
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/convProgressBar"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"/>
<RelativeLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:background="@drawable/border_bottom"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@+id/conv_header"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:paddingRight="10dp"
android:paddingLeft="10dp"
android:padding="10dp">
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:id="@+id/conv_avatar"
android:src="@drawable/blank_avatar4"
android:scaleType="fitXY"
android:layout_marginRight="10dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Aboudi"
android:id="@+id/conv_user_name"
android:textColor="#000000"
android:textSize="18sp"
android:layout_alignTop="@+id/conv_avatar"
android:layout_alignLeft="@+id/conv_online"
android:layout_alignStart="@+id/conv_online"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="conv_online"
android:id="@+id/conv_online"
android:layout_below="@+id/conv_user_name"
android:layout_toRightOf="@+id/conv_avatar"
android:layout_toEndOf="@+id/conv_avatar"
android:layout_marginTop="5dp"/>
<LinearLayout
android:id="@+id/profileFavBtn"
android:layout_width="30dp"
android:background="@drawable/heart_bg"
android:layout_height="30dp"
android:gravity="center"
android:layout_marginRight="5dp"
android:layout_marginLeft="5dp"
android:layout_alignParentRight="false"
android:layout_toLeftOf="@+id/profilegiftBtn"
android:layout_centerVertical="true">
<com.beardedhen.androidbootstrap.FontAwesomeText
android:id="@+id/profileFavText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
fontawesometext:fa_icon="fa-heart-o"
android:textColor="#B94309"
android:textSize="20sp"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/profilegiftBtn"
android:layout_width="30dp"
android:background="@drawable/accept_btn_bg"
android:layout_height="30dp"
android:gravity="center"
android:layout_marginRight="5dp"
android:layout_marginLeft="5dp"
android:layout_alignParentRight="false"
android:layout_toLeftOf="@+id/profileReportBtn"
android:layout_centerVertical="true">
<com.beardedhen.androidbootstrap.FontAwesomeText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
fontawesometext:fa_icon="fa-gift"
android:textColor="@color/white"
android:textSize="20sp"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/profileReportBtn"
android:layout_width="30dp"
android:background="@drawable/report_btn_bg"
android:layout_height="30dp"
android:gravity="center"
android:layout_marginRight="5dp"
android:layout_marginLeft="5dp"
android:layout_alignParentRight="false"
android:layout_toLeftOf="@+id/profileBlockBtn"
android:layout_centerVertical="true">
<com.beardedhen.androidbootstrap.FontAwesomeText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
fontawesometext:fa_icon="fa-info"
android:textColor="@color/white"
android:textSize="20sp"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/profileBlockBtn"
android:layout_width="30dp"
android:background="@drawable/refuse_btn_bg"
android:layout_height="30dp"
android:gravity="center"
android:layout_marginRight="5dp"
android:layout_marginLeft="5dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true">
<com.beardedhen.androidbootstrap.FontAwesomeText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
fontawesometext:fa_icon="fa-remove"
android:textColor="@color/white"
android:textSize="20sp"
/>
</LinearLayout>
</RelativeLayout>
<ListView
android:id="@+id/chat_list_view"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:divider="@drawable/chat_divider"
android:layout_width="match_parent"
android:scrollbarStyle="outsideOverlay"
android:layout_below="@id/conv_header"
android:layout_above="@+id/bottomlayout"
android:layout_height="match_parent"></ListView>
<LinearLayout
android:id="@+id/bottomlayout"
android:background="@drawable/profile_footer_border_top"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_alignParentBottom="true"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/cant_send_text"
android:layout_width="match_parent"
android:text="You cant contact this member right now"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="false"
android:layout_alignTop="@+id/chat_edit_text1"
android:layout_alignBottom="@+id/chat_edit_text1"
android:background="#ff4409"
android:gravity="center"
android:textColor="#ffffff"
android:textSize="15sp"
android:textStyle="bold"/>
<ImageView android:src="@drawable/ic_msg_panel_smiles" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginLeft="8dp" android:layout_marginRight="8dp"
android:layout_width="wrap_content" android:id="@+id/emojiButton" android:layout_alignBottom="@+id/chat_edit_text1" android:layout_marginBottom="8dp"
android:layout_height="wrap_content" />
<EditText
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:id="@+id/chat_edit_text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollHorizontally="false"
android:layout_toLeftOf="@+id/enter_chat1"
android:layout_toRightOf="@id/emojiButton"
android:layout_toEndOf="@id/emojiButton"
android:layout_toStartOf="@+id/enter_chat1"
android:hint="Type your message here .."
android:singleLine="false"
android:inputType="textCapSentences"
android:textSize="18sp"
android:paddingLeft="4dp" />
<ImageView android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:id="@+id/enter_chat1"
android:layout_width="wrap_content"
android:layout_marginBottom="8dp"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/chat_edit_text1"
android:paddingLeft="13dp"
android:paddingStart="13dp"
android:paddingRight="17dp"
android:paddingEnd="17dp"
android:src="@drawable/ic_chat_send" />
</RelativeLayout>
</LinearLayout>
</com.example.myapp.widgets.SizeNotifierRelativeLayout >
hier ist mein emojiview
public class EmojiView extends LinearLayout {
private ArrayList<EmojiGridAdapter> adapters = new ArrayList<EmojiGridAdapter>();
private int[] icons = {
R.drawable.ic_emoji_recent,
R.drawable.ic_emoji_smile,
R.drawable.ic_emoji_flower,
R.drawable.ic_emoji_bell,
R.drawable.ic_emoji_car,
R.drawable.ic_emoji_symbol };
private Listener listener;
private ViewPager pager;
private FrameLayout recentsWrap;
private ArrayList<GridView> views = new ArrayList<GridView>();
public EmojiView(Context paramContext) {
super(paramContext);
init();
}
public EmojiView(Context paramContext, AttributeSet paramAttributeSet) {
super(paramContext, paramAttributeSet);
init();
}
public EmojiView(Context paramContext, AttributeSet paramAttributeSet, int paramInt) {
super(paramContext, paramAttributeSet, paramInt);
init();
}
private void addToRecent(long paramLong) {
if (this.pager.getCurrentItem() == 0) {
return;
}
ArrayList<Long> localArrayList = new ArrayList<Long>();
long[] currentRecent = Emoji.data[0];
boolean was = false;
for (long aCurrentRecent : currentRecent) {
if (paramLong == aCurrentRecent) {
localArrayList.add(0, paramLong);
was = true;
} else {
localArrayList.add(aCurrentRecent);
}
}
if (!was) {
localArrayList.add(0, paramLong);
}
Emoji.data[0] = new long[Math.min(localArrayList.size(), 50)];
for (int q = 0; q < Emoji.data[0].length; q++) {
Emoji.data[0][q] = localArrayList.get(q);
}
adapters.get(0).data = Emoji.data[0];
adapters.get(0).notifyDataSetChanged();
saveRecents();
}
private String convert(long paramLong) {
String str = "";
for (int i = 0; ; i++) {
if (i >= 4) {
return str;
}
int j = (int)(0xFFFF & paramLong >> 16 * (3 - i));
if (j != 0) {
str = str + (char)j;
}
}
}
private void init() {
setOrientation(LinearLayout.VERTICAL);
for (int i = 0; i < Emoji.data.length; i++) {
GridView gridView = new GridView(getContext());
// if (AndroidUtilities.isTablet()) {
// gridView.setColumnWidth(AndroidUtilities.dp(60));
//} else {
gridView.setColumnWidth(AndroidUtilities.dp(45));
//}
gridView.setNumColumns(-1);
views.add(gridView);
EmojiGridAdapter localEmojiGridAdapter = new EmojiGridAdapter(Emoji.data[i]);
gridView.setAdapter(localEmojiGridAdapter);
// AndroidUtilities.setListViewEdgeEffectColor(gridView, 0xff999999);
adapters.add(localEmojiGridAdapter);
}
setBackgroundColor(0xff222222);
pager = new ViewPager(getContext());
pager.setAdapter(new EmojiPagesAdapter());
PagerSlidingTabStrip tabs = new PagerSlidingTabStrip(getContext());
tabs.setViewPager(pager);
tabs.setShouldExpand(true);
tabs.setIndicatorColor(0xff33b5e5);
tabs.setIndicatorHeight(AndroidUtilities.dp(2.0f));
tabs.setUnderlineHeight(AndroidUtilities.dp(2.0f));
tabs.setUnderlineColor(0x66000000);
tabs.setTabBackground(0);
LinearLayout localLinearLayout = new LinearLayout(getContext());
localLinearLayout.setOrientation(LinearLayout.HORIZONTAL);
localLinearLayout.addView(tabs, new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1.0f));
ImageView localImageView = new ImageView(getContext());
localImageView.setImageResource(R.drawable.ic_emoji_backspace);
localImageView.setScaleType(ImageView.ScaleType.CENTER);
localImageView.setBackgroundResource(R.drawable.bg_emoji_bs);
localImageView.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
if (EmojiView.this.listener != null) {
EmojiView.this.listener.onBackspace();
}
}
});
localLinearLayout.addView(localImageView, new LinearLayout.LayoutParams(AndroidUtilities.dp(61), LayoutParams.MATCH_PARENT));
recentsWrap = new FrameLayout(getContext());
recentsWrap.addView(views.get(0));
TextView localTextView = new TextView(getContext());
localTextView.setText(getContext().getString(R.string.NoRecent));
localTextView.setTextSize(18.0f);
localTextView.setTextColor(-7829368);
localTextView.setGravity(17);
recentsWrap.addView(localTextView);
views.get(0).setEmptyView(localTextView);
addView(localLinearLayout, new LinearLayout.LayoutParams(-1, AndroidUtilities.dp(48.0f)));
addView(pager);
loadRecents();
if (Emoji.data[0] == null || Emoji.data[0].length == 0) {
pager.setCurrentItem(1);
}
}
private void saveRecents() {
ArrayList<Long> localArrayList = new ArrayList<Long>();
long[] arrayOfLong = Emoji.data[0];
int i = arrayOfLong.length;
for (int j = 0; ; j++) {
if (j >= i) {
getContext().getSharedPreferences("emoji", 0).edit().putString("recents", TextUtils.join(",", localArrayList)).commit();
return;
}
localArrayList.add(arrayOfLong[j]);
}
}
public void loadRecents() {
String str = getContext().getSharedPreferences("emoji", 0).getString("recents", "");
String[] arrayOfString = null;
if ((str != null) && (str.length() > 0)) {
arrayOfString = str.split(",");
Emoji.data[0] = new long[arrayOfString.length];
}
if (arrayOfString != null) {
for (int i = 0; i < arrayOfString.length; i++) {
Emoji.data[0][i] = Long.parseLong(arrayOfString[i]);
}
adapters.get(0).data = Emoji.data[0];
adapters.get(0).notifyDataSetChanged();
}
}
public void onMeasure(int paramInt1, int paramInt2) {
super.onMeasure(View.MeasureSpec.makeMeasureSpec(View.MeasureSpec.getSize(paramInt1), MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(View.MeasureSpec.getSize(paramInt2), MeasureSpec.EXACTLY));
}
public void setListener(Listener paramListener) {
this.listener = paramListener;
}
public void invalidateViews() {
for (GridView gridView : views) {
if (gridView != null) {
gridView.invalidateViews();
}
}
}
private class EmojiGridAdapter extends BaseAdapter {
long[] data;
public EmojiGridAdapter(long[] arg2) {
this.data = arg2;
}
public int getCount() {
return data.length;
}
public Object getItem(int i) {
return null;
}
public long getItemId(int i) {
return data[i];
}
public View getView(int i, View view, ViewGroup paramViewGroup) {
ImageView imageView = (ImageView)view;
if (imageView == null) {
imageView = new ImageView(EmojiView.this.getContext()) {
public void onMeasure(int paramAnonymousInt1, int paramAnonymousInt2) {
setMeasuredDimension(View.MeasureSpec.getSize(paramAnonymousInt1), View.MeasureSpec.getSize(paramAnonymousInt1));
}
};
imageView.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
if (EmojiView.this.listener != null) {
EmojiView.this.listener.onEmojiSelected(EmojiView.this.convert((Long)view.getTag()));
}
EmojiView.this.addToRecent((Long)view.getTag());
}
});
imageView.setBackgroundResource(R.drawable.list_selector);
imageView.setScaleType(ImageView.ScaleType.CENTER);
}
imageView.setImageDrawable(Emoji.getEmojiBigDrawable(data[i]));
imageView.setTag(data[i]);
return imageView;
}
@Override
public void unregisterDataSetObserver(DataSetObserver observer) {
if (observer != null) {
super.unregisterDataSetObserver(observer);
}
}
}
private class EmojiPagesAdapter extends PagerAdapter implements PagerSlidingTabStrip.IconTabProvider {
public void destroyItem(ViewGroup paramViewGroup, int paramInt, Object paramObject) {
View localObject;
if (paramInt == 0) {
localObject = recentsWrap;
} else {
localObject = views.get(paramInt);
}
paramViewGroup.removeView(localObject);
}
public int getCount() {
return views.size();
}
public int getPageIconResId(int paramInt) {
return icons[paramInt];
}
public Object instantiateItem(ViewGroup paramViewGroup, int paramInt) {
View localObject;
if (paramInt == 0) {
localObject = recentsWrap;
} else {
localObject = views.get(paramInt);
}
paramViewGroup.addView(localObject);
return localObject;
}
public boolean isViewFromObject(View paramView, Object paramObject) {
return paramView == paramObject;
}
@Override
public void unregisterDataSetObserver(DataSetObserver observer) {
if (observer != null) {
super.unregisterDataSetObserver(observer);
}
}
}
public static abstract interface Listener {
public abstract void onBackspace();
public abstract void onEmojiSelected(String paramString);
}
}
das problem tritt auf, wenn die Tastatur sichtbar ist ,aber wenn es nicht sichtbar ist, die emoji-Ansicht funktioniert einwandfrei
- Es sollte Aussehen wie whatsapp oder andere messangers , es funktioniert gut auf Emulatoren getestet habe ich es in vielen apis mit virtueller Tastatur,aber auf meinem Gerät die emojiview ersetzen Sie nicht das keyboad und es kommt vor es
- Ich will die emoji-anzeigen popup, anstatt über die Tastatur , ich will, dass es über der Tastatur ,in Emulatoren, die ich getestet habe funktioniert es einwandfrei, aber nicht im eigentlichen Gerät
- ja du hast Recht , der code, den ich verwenden sollte das tun ,aber es funktioniert nicht im eigentlichen Gerät
- mein Gerät ist das alcatel one touch idol , android 4.1 und api 16 , aber im emulator mit api-16 funktioniert es
- versuchen Sie, die Schwerkraft.FÜLLEN Sie Ihre Fenster params
Du musst angemeldet sein, um einen Kommentar abzugeben.
Leider nicht, wie weit für Android 5.0 (ich weiß nicht, nach) es gibt keinen Weg, um die Tastatur Höhe. So können Sie nicht verwenden Sie diesen Wert, um die position Ihrer Ansicht.
Aber, können Sie das softKeyboard relayout zu tun, was Sie wollen, indem softKeyboard (an der Aktivität manifest) mit einem Wert von "Größe ändern" wird Ihre Wurzel in der layout-Ansicht geändert werden, um die Größe des verbleibenden Platz auf dem Bildschirm. Durch die Positionierung Ihrer anzeigen an der Unterseite machen es genau am oberen Rand der Tastatur.
PS: Auch Ihr root-Ansicht muss seine Höhe den Wert an, der match_parent anstelle von etwas anderem (oder Sie benötigen, um in der hart andere Möglichkeiten)
Vielleicht meinst du Sie wollen, ersetzen Sie die Tastatur-Position anstatt auf "top of it" (NORDEN?), in diesem Fall sollten Sie eine CustomView erweitert Sicht und nicht mit dem EditText, das tut, öffnet sich die Tastatur für Sie
Haben Sie, um die Tastatur auszublenden, während zeigt Fenster von emoji über:
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edText.getWindowToken(), 0);
wo edText ist das edittext Sie konzentrieren sich derzeit auf.
BEARBEITEN:
Das ist mein code zusammengeführt zu verkaufen.Sie können es versuchen.
public void GetVirtualKeybrdHeight() { root.getViewTreeObserver().addOnGlobalLayoutListener( new ViewTreeObserver.OnGlobalLayoutListener() { public void onGlobalLayout() { Rect r = new Rect(); root.getWindowVisibleDisplayFrame(r); Display display = getWindowManager().getDefaultDisplay(); int height = display.getHeight(); int screenHeight = root.getRootView().getHeight(); keyboradSize = screenHeight - (r.bottom - r.top); }});}
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(edText.getWindowToken(), 0);
Können Sie erstellen eine benutzerdefinierte EditText und deaktivieren Sie zeigen die Tastatur, indem Sie überschreiben onCheckIsTextEditor. Siehe code unten:
Können Sie etwas tun, wie dies für die Erstellung von Anzeigen über softKeyboard.
Hinweis :
Entfernen Sie diese Zeile aus deinem code, wenn Sie es verwendet haben.
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
In Ihrem manifest :
Stellen Sie sicher, dass Sie angepasst haben Ihr SoftInputMode zu AdjustResize.
Weitere Infos zu SoftInputmode finden Sie diese link.
Und wenn Sie nicht wollen, um zu zeigen, um Ihr layout bei der Tastatur nach unten, dann blenden Sie einfach das layout.
Hoffe es wird Euch helfen.
Ich bin mit diesem zu meiner Bewerbung, habe ich extrahiert aus der Bibliothek
https://github.com/chathudan/KitKatEmoji
Ich empfehle Ihnen die Benutzung der Bibliothek ist sehr umfassend und leicht zu implementieren. In dem Beispiel der Bibliothek ist die einfache Verwendung. Wenn nicht, ziehen Sie etwas wie dieses:
.
.
.
Stieß ich auf ein ähnliches problem, wenn ich Hinzugefügt emoji ' s zu meiner app.
Ich fand einen Weg, um zu zeigen, Emoji oben Softkeyboard mit "PopUpWindow".
EmojiOverKeyboard
MainActivity
ContentLayout
Verwenden meine Beispiel github-Projekt für Referenz.
Es hat geklappt :). Fügen Sie unten auf zwei Zeilen in der Listenansicht
Man kann es sehen hier