当前位置: 首页 > 工具软件 > TV输入法 > 使用案例 >

android 对话框 输入法遮挡,底部弹出 和输入法遮挡问题的解决

钱浩荡
2023-12-01

package com.example.dialog;

import android.os.Bundle;

import android.annotation.SuppressLint;

import android.app.Activity;

import android.app.Dialog;

import android.view.Display;

import android.view.Gravity;

import android.view.LayoutInflater;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.Window;

import android.view.WindowManager;

import android.widget.Button;

import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

private View inflate;

private Button choosePhoto;

private Button takePhoto;

private Button cancel;

private Dialog dialog;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

@SuppressWarnings("deprecation")

@SuppressLint("InflateParams")

public void show(View view){

dialog = new Dialog(this);

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

inflate = LayoutInflater.from(this).inflate(R.layout.dialog, null);

choosePhoto = (Button) inflate.findViewById(R.id.choosePhoto);

takePhoto = (Button) inflate.findViewById(R.id.takePhoto);

cancel = (Button) inflate.findViewById(R.id.btn_cancel);

choosePhoto.setOnClickListener(this);

takePhoto.setOnClickListener(this);

cancel.setOnClickListener(this);

dialog.setContentView(inflate);

Window dialogWindow = dialog.getWindow();

dialogWindow.setGravity( Gravity.BOTTOM);

//        应该是dialogWindow.getAttributes:

WindowManager m = getWindowManager();

Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用

WindowManager.LayoutParams p = dialogWindow.getAttributes(); // 获取对话框当前的参数值

//        p.height = (int) (d.getHeight() * 0.6); // 高度设置为屏幕的0.6

p.width = (int) (d.getWidth() * 1); // 宽度设置为屏幕的0.65

dialogWindow.setAttributes(p);

dialog.show();

}

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

switch (v.getId()){

case R.id.takePhoto:

Toast.makeText(this,"点击了拍照",Toast.LENGTH_SHORT).show();

break;

case R.id.choosePhoto:

Toast.makeText(this,"点击了选择照片",Toast.LENGTH_SHORT).show();

break;

case R.id.btn_cancel:

dialog.dismiss();

}

}

}

********************************************

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context=".MainActivity" >

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerInParent="true"

android:onClick="show"

android:text="显示弹框"

/>

*****************************************

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

android:id="@+id/takePhoto"

android:layout_width="match_parent"

android:layout_height="45dp"

android:gravity="center"

android:text="拍照"

android:textColor="#0000ff"

android:textSize="18sp"

android:textStyle="bold" />

android:id="@+id/choosePhoto"

android:layout_width="match_parent"

android:layout_height="45dp"

android:gravity="center"

android:text="从相册选择"

android:textColor="#0000ff"

android:textSize="18sp"

android:textStyle="bold" />

android:id="@+id/btn_cancel"

android:layout_width="match_parent"

android:layout_height="45dp"

android:layout_marginTop="8dp"

android:gravity="center"

android:text="取消"

android:textColor="#0000ff"

android:textSize="18sp"

android:textStyle="bold" />

原来的代码

底部弹出评论

//@SuppressWarnings("deprecation")

//public void dialog(){

detail_content.setVisibility(View.GONE);

//dialog = new Dialog(mContext,R.style.AppBaseTheme);

dialog.setCanceledOnTouchOutside(true);

//dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

//        inflate = LayoutInflater.from(mContext).inflate(R.layout.fragment_video_class_commit_dialog, null);

//commit = (TextView) inflate.findViewById(R.id.video_relpy_tv_reply_delete);

//reply_content=(EditText) inflate.findViewById(R.id.video_relpy_tv_reply_content1);

//rbRating_reply = (RatingBar) inflate.findViewById(R.id.video_relpy_rb_evaluation1);

//rbRating_reply.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {

//@Override

//public void onRatingChanged(RatingBar ratingBar, float rating,boolean fromUser) {

//if (ratingBar.getId() == R.id.video_relpy_rb_evaluation1) {

//scoreContent = String.valueOf((int) rating);

//}

//}

//});

//commit.setOnClickListener(new OnClickListener() {

//@Override

//public void onClick(View v) {

//if (first) {

//cont=reply_content.getText().toString();

// if (cont.equals("")) {

//

//DialogSingleButton alertDialog = new DialogSingleButton(

//mContext, "评论不能为空");

//alertDialog.show();

//return;

//}

//commitEvaluation(cont);

//first=false;

//}else {

//pg.cancel();

//DialogSingleButton alertDialog = new DialogSingleButton(

//mContext, "只能评论一次");

//alertDialog.show();

//return;

//}

//

//}

//});

//        dialog.setContentView(inflate);

//        float aaaa = 0;

//        Window dialogWindow = dialog.getWindow();

//

//        dialogWindow.setGravity( Gravity.BOTTOM);

//        WindowManager m = getActivity().getWindowManager();

//        Display d = m.getDefaultDisplay(); // 获取屏幕宽、高

//        WindowManager.LayoutParams p = dialogWindow.getAttributes(); // 获取对话框当前的参数值

//        p.height = (int) (d.getHeight() * 0.2); // 高度设置为屏幕的0.6

//        p.width = (int) (d.getWidth() * 1); // 宽度设置为屏幕的0.65

//        dialogWindow.setAttributes(p);

       dialogWindow

       dialogWindow.setLayout(500, 300);

//        dialogWindow.clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);

//        dialogWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE |

//                WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

//        dialog.show();

//

//

//}

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

//遮挡问题的解决fragment中

//底部弹出评论

@SuppressWarnings("deprecation")

public void dialog(){

detail_content.setVisibility(View.GONE);

inflate = LayoutInflater.from(mContext).inflate(R.layout.fragment_video_class_commit_dialog, null);

commit = (TextView) inflate.findViewById(R.id.video_relpy_tv_reply_delete);

reply_content=(EditText) inflate.findViewById(R.id.video_relpy_tv_reply_content1);

reply_content.setOnFocusChangeListener(new OnFocusChangeListener() {

@Override

public void onFocusChange(View v, boolean hasFocus) {

if (hasFocus) {

detial_favorite.setVisibility(View.GONE);

}else

{

detial_favorite.setVisibility(View.VISIBLE);

}

}

});

rbRating_reply = (RatingBar) inflate.findViewById(R.id.video_relpy_rb_evaluation1);

rbRating_reply.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {

@Override

public void onRatingChanged(RatingBar ratingBar, float rating,boolean fromUser) {

if (ratingBar.getId() == R.id.video_relpy_rb_evaluation1) {

scoreContent = String.valueOf((int) rating);

}

}

});

commit.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

if (first) {

cont=reply_content.getText().toString();

if (cont.equals("")) {

DialogSingleButton alertDialog = new DialogSingleButton(

mContext, "评论不能为空");

alertDialog.show();

return;

}

commitEvaluation(cont);

first=false;

}else {

pg.cancel();

DialogSingleButton alertDialog = new DialogSingleButton(

mContext, "只能评论一次");

alertDialog.show();

return;

}

}

});

WindowManager m = getActivity().getWindowManager();

Display d = m.getDefaultDisplay(); // 获取屏幕宽、高

int h=(int)Math.round(d.getHeight() * 0.2);

// WindowManager.LayoutParams.FILL_PARENT,WindowManager.LayoutParams.WRAP_CONTENT,false);

final PopupWindow popWindow = new PopupWindow(inflate,d.getWidth() * 1,h);

popWindow.setAnimationStyle(R.style.AppBaseTheme);

popWindow.setFocusable(true);

popWindow.setOutsideTouchable(true);// 设置允许在外点击消失

//这句是为了防止弹出菜单获取焦点之后,点击activity的其他组件没有响应

popWindow.setSoftInputMode(PopupWindow.INPUT_METHOD_NEEDED);

//防止虚拟软键盘被弹出菜单遮住

popWindow.setBackgroundDrawable(new BitmapDrawable());

popWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

popWindow.showAtLocation(super.getView(), Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);

}

 类似资料: