Java ListView中的微调器似乎出现在ListView之外

Java ListView中的微调器似乎出现在ListView之外,java,android,listview,spinner,Java,Android,Listview,Spinner,我现在正在开发一个应用程序,它在ListView中有一个微调器。 在我看来,微调器应用在Listview之外 是什么导致了这个问题 窗口如下:(见2个红色圆圈) My MainActivity.xml如下所示: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="h

我现在正在开发一个应用程序,它在ListView中有一个微调器。 在我看来,微调器应用在Listview之外

是什么导致了这个问题

窗口如下:(见2个红色圆圈)

My MainActivity.xml如下所示:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    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:id="@+id/mainView"
    tools:context=".MainActivity">


    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/relativeLayoutButton">

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true">

            <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_camera"
                android:id="@+id/buttonCapture" />

            <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_receipt"
                android:id="@+id/buttonSelect"
                android:layout_toEndOf="@+id/buttonCapture"
                android:layout_marginStart="20dp" />

        </RelativeLayout>

        <Switch
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/switchAddSelection"
            android:text="@string/addSelection"
            android:textSize="20sp"
            android:gravity="end"
            android:layout_centerVertical="true"
            android:layout_alignParentEnd="true"/>

    </RelativeLayout>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textViewDate"
        android:textSize="20sp"
        android:layout_below="@+id/relativeLayoutButton"
        android:layout_centerHorizontal="true"/>

    <ListView
        android:id="@+id/listViewBoughtItems"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/buttonSave"
        android:layout_below="@+id/textViewDate" />

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/buttonSave"
        android:src="@drawable/ic_database"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"/>

</RelativeLayout>
        public View getView(final int position, View convertView, @NonNull ViewGroup parent) {
        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.bought_list_item, null);
        }
        final ItemBean item = this.getItem(position);
        if (item != null) {
            TextView mNumber = convertView.findViewById(R.id.textViewNumber);
            mNumber.setText(String.valueOf(position + 1));
            mBoughtItem = convertView.findViewById(R.id.editTextItem);
            mBoughtItem.setText(item.getBoughtItem());
            mBoughtItem.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                }

                @Override
                public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                }

                @Override
                public void afterTextChanged(Editable editable) {
                    gReceipt.boughtItemList.get(position).description = mBoughtItem.getText().toString();
                }
            });
            TextView mCurrencySymbol = convertView.findViewById(R.id.textViewCurrencySymbol);
            mCurrencySymbol.setText(R.string.currencySymbol);
            mPrice = convertView.findViewById(R.id.editTextPrice);
            mPrice.setText(String.format(Locale.JAPANESE, "%.1f", item.getPrice()));
            mPrice.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                }

                @Override
                public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                }

                @Override
                public void afterTextChanged(Editable editable) {
                    gReceipt.boughtItemList.get(position).price = Float.valueOf(mPrice.getText().toString());
                }
            });


            mSpinner = convertView.findViewById(R.id.spinnerCategory);
            ArrayAdapter<String> adapterCategory = new ArrayAdapter<>(thisContext, android.R.layout.simple_spinner_item);
            adapterCategory.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            adapterCategory.add("AAA");
            adapterCategory.add("BBB");
            adapterCategory.add("CCC");
            mSpinner.setAdapter(adapterCategory);

        }
        return convertView;
    }

}

我的列表项xml os如下所示:

<?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="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:layout_width="30dp"
        android:layout_height="wrap_content"
        android:id="@+id/textViewNumber"
        android:textSize="14sp"
        android:gravity="end"
        android:layout_centerVertical="true"/>

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/editTextItem"
        android:inputType="textMultiLine"
        android:textSize="14sp"
        android:layout_toEndOf="@+id/textViewNumber"
        android:layout_toStartOf="@+id/buttonDelete"
        android:layout_marginStart="10dp"/>

    <Spinner
        android:id="@+id/spinnerCategory"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/editTextItem"
        android:layout_marginStart="10dp"
        android:layout_toEndOf="@+id/textViewNumber" />

    <TextView
        android:id="@+id/textViewCurrencySymbol"
        android:layout_width="20dp"
        android:layout_height="40dp"
        android:layout_below="@+id/editTextItem"
        android:layout_toStartOf="@+id/editTextPrice"
        android:gravity="end|center_vertical"
        android:textSize="14sp" />

    <EditText
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:id="@+id/editTextPrice"
        android:singleLine="true"
        android:gravity="end"
        android:inputType="numberDecimal"
        android:textSize="14sp"
        android:layout_toStartOf="@+id/buttonDelete"
        android:layout_below="@+id/editTextItem"/>

    <Button
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:id="@+id/buttonDelete"
        android:background="@drawable/ic_cancel_red_24dp"
        android:layout_alignParentEnd="true"
        android:layout_centerVertical="true"
        android:layout_marginStart="10dp"/>

</RelativeLayout>

我关于微调器的代码如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    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:id="@+id/mainView"
    tools:context=".MainActivity">


    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/relativeLayoutButton">

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true">

            <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_camera"
                android:id="@+id/buttonCapture" />

            <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_receipt"
                android:id="@+id/buttonSelect"
                android:layout_toEndOf="@+id/buttonCapture"
                android:layout_marginStart="20dp" />

        </RelativeLayout>

        <Switch
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/switchAddSelection"
            android:text="@string/addSelection"
            android:textSize="20sp"
            android:gravity="end"
            android:layout_centerVertical="true"
            android:layout_alignParentEnd="true"/>

    </RelativeLayout>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textViewDate"
        android:textSize="20sp"
        android:layout_below="@+id/relativeLayoutButton"
        android:layout_centerHorizontal="true"/>

    <ListView
        android:id="@+id/listViewBoughtItems"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/buttonSave"
        android:layout_below="@+id/textViewDate" />

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/buttonSave"
        android:src="@drawable/ic_database"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"/>

</RelativeLayout>
        public View getView(final int position, View convertView, @NonNull ViewGroup parent) {
        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.bought_list_item, null);
        }
        final ItemBean item = this.getItem(position);
        if (item != null) {
            TextView mNumber = convertView.findViewById(R.id.textViewNumber);
            mNumber.setText(String.valueOf(position + 1));
            mBoughtItem = convertView.findViewById(R.id.editTextItem);
            mBoughtItem.setText(item.getBoughtItem());
            mBoughtItem.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                }

                @Override
                public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                }

                @Override
                public void afterTextChanged(Editable editable) {
                    gReceipt.boughtItemList.get(position).description = mBoughtItem.getText().toString();
                }
            });
            TextView mCurrencySymbol = convertView.findViewById(R.id.textViewCurrencySymbol);
            mCurrencySymbol.setText(R.string.currencySymbol);
            mPrice = convertView.findViewById(R.id.editTextPrice);
            mPrice.setText(String.format(Locale.JAPANESE, "%.1f", item.getPrice()));
            mPrice.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                }

                @Override
                public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                }

                @Override
                public void afterTextChanged(Editable editable) {
                    gReceipt.boughtItemList.get(position).price = Float.valueOf(mPrice.getText().toString());
                }
            });


            mSpinner = convertView.findViewById(R.id.spinnerCategory);
            ArrayAdapter<String> adapterCategory = new ArrayAdapter<>(thisContext, android.R.layout.simple_spinner_item);
            adapterCategory.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            adapterCategory.add("AAA");
            adapterCategory.add("BBB");
            adapterCategory.add("CCC");
            mSpinner.setAdapter(adapterCategory);

        }
        return convertView;
    }

}
public View getView(最终int位置,视图convertView,@NonNull视图组父级){
if(convertView==null){
convertView=mInflater.充气(R.layout.Bunded\u列表项,空);
}
final ItemBean item=this.getItem(位置);
如果(项!=null){
TextView mNumber=convertView.findViewById(R.id.textViewNumber);
mNumber.setText(String.valueOf(位置+1));
mBoughtItem=convertView.findViewById(R.id.editTextItem);
mBoughtItem.setText(item.getBoughtItem());
mBoughtItem.addTextChangedListener(新的TextWatcher(){
@凌驾
更改前的公共无效(CharSequence CharSequence,int i,int i1,int i2){
}
@凌驾
public void onTextChanged(CharSequence CharSequence,int i,int i1,int i2){
}
@凌驾
public void PostTextChanged(可编辑){
grecept.boughtItemList.get(position.description=mBoughtItem.getText().toString();
}
});
TextView mCurrencySymbol=convertView.findViewById(R.id.textViewCurrencySymbol);
mcurrencycsymbol.setText(R.string.currencycsymbol);
mPrice=convertView.findViewById(R.id.editTextPrice);
mPrice.setText(String.format(Locale.JAPANESE,“%.1f”,item.getPrice());
addTextChangedListener(新的TextWatcher(){
@凌驾
更改前的公共无效(CharSequence CharSequence,int i,int i1,int i2){
}
@凌驾
public void onTextChanged(CharSequence CharSequence,int i,int i1,int i2){
}
@凌驾
public void PostTextChanged(可编辑){
grecept.boughtItemList.get(position.price=Float.valueOf(mPrice.getText().toString());
}
});
mSpinner=convertView.findViewById(R.id.spinnerCategory);
ArrayAdapterCategory=新的ArrayAdapter(此上下文,android.R.layout.simple\u微调器\u项);
adapterCategory.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
适配器类别。添加(“AAA”);
适配器类别。添加(“BBB”);
适配器类别。添加(“CCC”);
mSpinner.setAdapter(适配器类别);
}
返回视图;
}
}
附言。 这种现象发生在滚动ListView时

我很感激你的建议。
提前谢谢。

这是有线问题!试试这个,检查它是否正常

 <ListView
    android:id="@+id/listViewBoughtItems"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" //change this line from match_parent to wrap_content
    android:layout_above="@+id/buttonSave"
    android:layout_below="@+id/textViewDate" />


share MainActivity.xml的完整代码我更新了我的问题,以便有完整的xml文件。谢谢。我试过了(android:layout\u height=“wrap\u content”