Android 键盘重叠在tablelayout上编辑文本
我有一个带有微调器和表格布局的全屏对话框片段。 我可以通过选择微调器的一个选项向tablelayout添加元素。这些元素是扩展到tablelayout中的CardView(让我们不要争论为什么我选择了它而不是recyclerview或listview) 我有两个问题 第一: 视图与其父宽度不匹配(每个元素右侧有一个空格) 第二: tablelayout的每个元素都有一个编辑文本字段。如果我添加几个元素,键盘将与最后一个编辑文本重叠。 我怎样才能解决这些问题。我在乞求安卓 这是我的密码 Dialog\u search\u contract.javaAndroid 键盘重叠在tablelayout上编辑文本,android,android-tablelayout,android-keypad,Android,Android Tablelayout,Android Keypad,我有一个带有微调器和表格布局的全屏对话框片段。 我可以通过选择微调器的一个选项向tablelayout添加元素。这些元素是扩展到tablelayout中的CardView(让我们不要争论为什么我选择了它而不是recyclerview或listview) 我有两个问题 第一: 视图与其父宽度不匹配(每个元素右侧有一个空格) 第二: tablelayout的每个元素都有一个编辑文本字段。如果我添加几个元素,键盘将与最后一个编辑文本重叠。 我怎样才能解决这些问题。我在乞求安卓 这是我的密码 Dial
public class Dialog_search_contract extends DialogFragment {
//private Arraylist<>
private static final String TAG = "AKDialogFragment";
private View view_search;
private TableLayout tabla;
private Dialog_manager dm=Dialog_manager.getDialog_manager();
private TableRow fila;
private final TableRow.LayoutParams layoutFila = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT);
private final TableRow.LayoutParams layout_celda = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.MATCH_PARENT);
boolean flags[];
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (getActivity()instanceof Comercial) {
view_search = inflater.inflate(R.layout.search_contract_comercial, container, false);
}
else{
view_search = inflater.inflate(R.layout.search_contract, container, false);
}
tabla = (TableLayout) view_search.findViewById(R.id.table_search);
tabla.setLayoutParams(layout_celda);
Toolbar toolbar = (Toolbar) view_search.findViewById(R.id.toolbar_search_contract);
toolbar.setTitle("Buscar contrato");
((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);
ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);
actionBar.setHomeAsUpIndicator(android.R.drawable.ic_menu_close_clear_cancel);
}
setHasOptionsMenu(true);
Spinner opcion = (Spinner) view_search.findViewById(R.id.spinner);
ArrayAdapter<CharSequence> staticAdapter = ArrayAdapter
.createFromResource(view_search.getContext(), R.array.contract_search,
android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
staticAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
opcion.setAdapter(staticAdapter);
opcion.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
addCriteria(position);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
return view_search;
}
public void addCriteria(int position) {
Filtro_contract aux= getOption(position);
View tr= createView(aux,position);
addTextField(aux,tr);
addRemoveButton(tr);
addSpinner(aux,tr);
addOptionText(aux,tr);
tabla.addView(tr);
}
private View createView(Filtro_contract filter, int position) {
LayoutInflater inflater;
View tr = null;
inflater=LayoutInflater.from(view_search.getContext());
tr = inflater.inflate(R.layout.cardview_search, null,false);
tr.setId(position);
tr.setLayoutParams(layoutFila);
return tr;
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
return dialog;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.clear();
getActivity().getMenuInflater().inflate(R.menu.search_contract_menu, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_search) {
sendQuery();
return true;
} else if (id == android.R.id.home) {
dismiss();
dm.closeDialog();
Log.d("--","Se ha cerrado el dialogo Dialog_search_contract");
return true;
}
return super.onOptionsItemSelected(item);
}
private void sendQuery() {
Context context=getActivity();
Contract_query_instance.setContract_query_instance(generateQuery());
if (getActivity()instanceof Comercial) {
Intent i = new Intent(context, Result_contract.class);
context.startActivity(i);
}
else{
((Result_contract)getActivity()).load_data();
}
dm.closeDialog();
dismiss();
}
public Contract_query generateQuery()
{ ArrayList<Contract_condition> condiciones= new ArrayList<Contract_condition>();
for (int i = 0; i < tabla.getChildCount(); i++) {
View criterio= tabla.getChildAt(i);
int id=criterio.getId();
Filtro_contract filtro=getOption(id);
Spinner sp=(Spinner)criterio.findViewById(R.id.spinner);
int cond=sp.getSelectedItemPosition();
Compare compare= getCompare(cond,filtro);
EditText txt= (EditText)criterio.findViewById(R.id.texto);
String texto= String.valueOf(txt.getText());
if ((!sonEspacios(texto)&& texto!=null)
|| compare==Compare.NOT_STABLISHED
|| compare==compare.STABLISHED ) {
//Reemplaza varios espacios por uno y elimina los del comienzo y el final
String text = texto.replaceAll(" +", " ").trim();
if (filtro==Filtro_contract.SIGNING_DATE||filtro==Filtro_contract.DUE_DATE)
{
Date fecha= FormatDate.parse_from_dd_MM_yy(text);
text=FormatDate.format_to_yyyy_MM_dd(fecha);
}
condiciones.add(new Contract_condition(filtro, compare, text));
}
}
Contract_query qry= new Contract_query(condiciones);
Log.d("Se ha generado la ","consulta");
return qry;
}
}
public class Dialog\u search\u contract扩展DialogFragment{
//私人Arraylist
私有静态最终字符串TAG=“AKDialogFragment”;
私有视图搜索;
私人表格;
私有对话框管理器dm=Dialog\u manager.getDialog\u manager();
私人桌椅;
private final TableRow.LayoutParams layoutFila=新建TableRow.LayoutParams(TableRow.LayoutParams.MATCH_父级,TableRow.LayoutParams.WRAP_内容);
private final TableRow.LayoutParams layout_celda=新建TableRow.LayoutParams(TableRow.LayoutParams.MATCH_父级,TableRow.LayoutParams.MATCH_父级);
布尔标志[];
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
如果(getActivity()实例为Commercial){
查看\搜索=充气机。充气(R.layout.search \合同\商业、集装箱、假);
}
否则{
查看搜索=充气机。充气(R.layout.search\u合同,容器,假);
}
tabla=(TableLayout)查看搜索.findViewById(R.id.table搜索);
表A.setLayoutParams(layout_celda);
Toolbar Toolbar=(Toolbar)view\u search.findViewById(R.id.Toolbar\u search\u contract);
工具栏.setTitle(“客车对照”);
((AppCompatActivity)getActivity()).setSupportActionBar(工具栏);
ActionBar ActionBar=((AppCompatActivity)getActivity()).getSupportActionBar();
if(actionBar!=null){
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(真);
actionBar.setHomeAsUpIndicator(android.R.drawable.ic\u菜单\u关闭\u清除\u取消);
}
设置选项菜单(真);
Spinner opcion=(Spinner)view\u search.findViewById(R.id.Spinner);
ArrayAdapter staticAdapter=ArrayAdapter
.createFromResource(查看\u搜索.getContext(),R.array.contract\u搜索,
android.R.layout.simple\u微调器(项目);
//指定显示选项列表时要使用的布局
静态适配器
.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
//将适配器应用于微调器
opcion.setAdapter(静态适配器);
option.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图、,
内部位置,长id){
职位标准;
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
返回视图搜索;
}
公共无效添加标准(内部位置){
Filtro_合同aux=getOption(位置);
视图tr=创建视图(辅助,位置);
addTextField(辅助,tr);
addRemoveButton(tr);
添加微调器(辅助,tr);
addOptionText(辅助,tr);
表A.addView(tr);
}
私有视图createView(Filtro_合同过滤器,int位置){
充气机;
视图tr=null;
充气器=LayoutInflater.from(view_search.getContext());
tr=充气机。充气(R.layout.cardview_search,null,false);
tr.setId(位置);
tr.setLayoutParams(layoutFila);
返回tr;
}
@非空
@凌驾
创建对话框上的公共对话框(Bundle savedInstanceState){
Dialog Dialog=super.onCreateDialog(savedInstanceState);
对话框.requestWindowFeature(窗口.FEATURE\u无\u标题);
返回对话框;
}
@凌驾
创建选项菜单(菜单菜单,菜单充气机){
menu.clear();
getActivity().getMenuInflater().充气(R.menu.search\u contract\u menu,menu);
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
int id=item.getItemId();
if(id==R.id.action\u search){
sendQuery();
返回true;
}else if(id==android.R.id.home){
解雇();
dm.closeDialog();
Log.d(“-”,“sehacerrado el dialogo Dialog\u search\u contract”);
返回true;
}
返回super.onOptionsItemSelected(项目);
}
私有void sendQuery(){
Context=getActivity();
Contract_query_实例。setContract_query_实例(generateQuery());
如果(getActivity()实例为Commercial){
意向i=新意向(上下文、结果和合同类);
背景。起始触觉(i);
}
否则{
((结果契约)getActivity())。加载数据();
}
dm.closeDialog();
解雇();
}
公共合同查询生成器()
{ArrayList condicines=new ArrayList();
对于(int i=0;i<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:background="@android:color/background_light">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay"
android:fitsSystemWindows="false" >
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_search_contract"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay"
/>
</android.support.design.widget.AppBarLayout>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Agregar Condición"
android:id="@+id/agregarCondicionText" />
<Spinner android:text="@string/opcion"
android:id="@+id/spinner"
android:layout_width="200dp"
android:layout_height="wrap_content"
/>
<ScrollView
android:id="@+id/scrollvertical_search_contract"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scrollbars="vertical"
android:layout_weight="1">
<HorizontalScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/scrollhorizontal_search_contract"
android:scrollbars="horizontal"
android:layout_weight="1">
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TableLayout android:id="@+id/table_search"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:stretchColumns="1">
</TableLayout>
</LinearLayout>
</HorizontalScrollView>
</ScrollView>
</LinearLayout>
</android.support.design.widget.CoordinatorLayout>
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="120dp"
card_view:cardCornerRadius="4dp"
card_view:cardElevation="4dp"
card_view:cardUseCompatPadding="true">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@style/cardview_header"
android:text="filtro"
android:id="@+id/filtro"
android:layout_marginBottom="5dp"
android:layout_alignParentTop="true"
android:layout_marginLeft="10dp" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/boton_cerrar"
android:src="@drawable/ic_close_box"
android:layout_alignParentTop="true"
android:background="@null"
android:layout_alignParentRight="true"/>
<Spinner android:text="@string/opcion"
android:id="@+id/spinner"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_below="@id/linea"
android:layout_marginRight="5dp"
/>
<EditText
android:id="@+id/texto"
android:layout_width="100dp"
android:gravity="end"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_height="wrap_content"
android:layout_below="@id/spinner"
android:layout_marginEnd="10dp"
android:layout_alignTop="@id/spinner"
android:layout_toRightOf="@id/spinner"
android:layout_marginRight="10dp"
/>
<View
android:layout_width="wrap_content"
android:layout_height="1dp"
android:background="#ffd5d5d5"
android:id="@+id/linea"
android:layout_below="@+id/filtro"
android:layout_marginBottom="5dp"></View>
<!--ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/estado"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
/-->
</RelativeLayout>
</android.support.v7.widget.CardView>
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="120dp"
card_view:cardCornerRadius="4dp"
card_view:cardElevation="4dp"
card_view:cardUseCompatPadding="true">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@style/cardview_header"
android:text="filtro"
android:id="@+id/filtro"
android:layout_marginBottom="5dp"
android:layout_alignParentTop="true"
android:layout_marginLeft="10dp" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/boton_cerrar"
android:src="@drawable/ic_close_box"
android:layout_alignParentTop="true"
android:background="@null"
android:layout_alignParentRight="true"/>
<Spinner android:text="@string/opcion"
android:id="@+id/spinner"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_below="@id/linea"
android:layout_marginRight="5dp"
/>
<EditText
android:id="@+id/texto"
android:layout_width="100dp"
android:gravity="end"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_height="wrap_content"
android:layout_below="@id/spinner"
android:layout_marginEnd="10dp"
android:layout_alignTop="@id/spinner"
android:layout_toRightOf="@id/spinner"
android:layout_marginRight="10dp"
/>
<View
android:layout_width="wrap_content"
android:layout_height="1dp"
android:background="#ffd5d5d5"
android:id="@+id/linea"
android:layout_below="@+id/filtro"
android:layout_marginBottom="5dp"></View>
<!--ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/estado"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
/-->
</RelativeLayout>
</android.support.v7.widget.CardView>