安卓下拉框去除垂直多余空间/内边距

8

我是新手Android应用程序开发者,在创建下拉列表框时,我注意到在下拉列表的顶部和底部垂直方向多了一个额外的空间/填充。

MainActivity.java:

public class MainActivity extends AppCompatActivity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Spinner sr = (Spinner) findViewById(R.id.spinner);
        String[] days = getResources().getStringArray(R.array.days);
        ArrayAdapter<String> ar = new ArrayAdapter<>(this, R.layout.single_row, days);
        sr.setAdapter(ar);
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#666666"
    tools:context="com.xxxxx.defaultspinner.MainActivity">

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp"
        android:spinnerMode="dialog"
        android:background="#898989">

    </Spinner>

</RelativeLayout>

single_row.xml

<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/app_name"
    android:textColor="#FFFFFF"
    android:textSize="26sp"
    android:background="#214161">

</TextView>

输入图像描述

输入图像描述

我将所有视图的背景设置为不同的颜色,以便我可以识别额外空间/填充的来源。但是额外的空间/填充具有白色背景,而没有任何视图具有该背景。

注意,这不是因为spinnerMode =“dialog”选项。当spinnerMode =“dropdown”时,也会出现此行为。我该如何删除此空间?或者我做错了什么?


你最终解决了吗? - einschneidend
2个回答

6

您只需要在适配器中覆盖getDropDownView方法即可。

@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
    parent.setPadding(0, 0, 0, 0);
    return convertView;
}

0

尝试将此代码添加到您的TextView

android:includeFontPadding="false"

它将去除TextView的额外顶部和底部填充


不,额外的空间/填充不是来自TextView,因为TextView的背景颜色是#214161,而额外空间/填充的背景颜色是#FFFFFF。我也测试了你的答案,结果仍然相同。 - HeiseN

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接