Android 制作适合微调器的自定义布局

Android 制作适合微调器的自定义布局,android,view,constraints,spinner,Android,View,Constraints,Spinner,“我的微调器”受准则约束,并根据屏幕大小更改其大小。然后是我的问题。我有这个 它的自定义_spinner.XML 其宽度和高度为匹配约束 我的自定义适配器 public class MyCustomSpinnerAdapter extends ArrayAdapter<MySpinnerData> { private Context context; private List<MySpinnerData> spinnerData; p

“我的微调器”受准则约束,并根据屏幕大小更改其大小。然后是我的问题。我有这个

它的自定义_spinner.XML 其宽度和高度为匹配约束
我的自定义适配器

     public class MyCustomSpinnerAdapter extends ArrayAdapter<MySpinnerData> 
{
    private Context context;
    private List<MySpinnerData> spinnerData;
    private boolean Car = false;
    private String initialText;
    private boolean alignLeft = false;

    public MyCustomSpinnerAdapter(@NonNull Context context,@LayoutRes int resource,List<MySpinnerData> spinnerData) 
    {
        super(context, resource,spinnerData);
        spinnerData = spinnerData;
        context = context;
    }
    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) 
    {
        return myCustomSpinnerView(position, convertView, parent ); 
    }

    @Override
    public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) 
    {
        return myCustomSpinnerView(position, convertView, parent);
    }
    private View myCustomSpinnerView(int position, @Nullable View myView, @NonNull ViewGroup parent)
    {
        LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View customview = layoutInflater.inflate(R.layout.spinner_layout,parent,false);
        TextView textView = (TextView)customview.findViewById(R.id.textView);
        textView.setText(spinnerData.get(position).getIconName());  //function that set text
        return customview;
    }
}
公共类MyCustomSpinerAdapter扩展了ArrayAdapter
{
私人语境;
私有列表喷丝头数据;
私家车=假;
私有字符串初始文本;
private boolean alignLeft=false;
公共MyCustomSpinnerAdapter(@NonNull上下文上下文,@LayoutRes int资源,列表spinnerData)
{
超级(上下文、资源、喷丝头数据);
喷丝头数据=喷丝头数据;
上下文=上下文;
}
@非空
@凌驾
公共视图getView(int位置,@Nullable视图convertView,@NonNull视图组父级)
{
返回myCustomSpinnerView(位置、转换视图、父视图);
}
@凌驾
公共视图getDropDownView(int位置,@Nullable视图convertView,@NonNull视图组父级)
{
返回myCustomSpinnerView(位置、转换视图、父视图);
}
私有视图myCustomSpinnerView(int位置,@Nullable视图myView,@NonNull视图组父级)
{
LayoutInflater LayoutInflater=(LayoutInflater)context.getSystemService(context.LAYOUT\u INFLATER\u SERVICE);
视图customview=layoutInflater.flate(R.layout.spinner\u布局,父级,false);
TextView TextView=(TextView)customview.findViewById(R.id.TextView);
textView.setText(spinnerData.get(position.getIconName());//设置文本的函数
返回自定义视图;
}
}

这就是我得到的


这是custom_spinner.XML



这是activity_main.XML(spinner)


Width fullfit很棒,但只要我将“匹配约束”设置为自定义微调器的宽度参数,就会显示一个下拉项?

有人能帮我吗?在我添加了

customview.measure(0,0);

MyCustomSpinnerView
方法中,它可以工作
但它显示的项目高度较低,而不是实际微调器的高度?

度量函数做了什么,为什么它现在可以工作?

这是一个布局问题,您正在发布java代码。。好Work@Sam我添加了XML代码,很抱歉,我所能看到的是宽度
0dp
无处不在。@Sam不必粗鲁。如果你不想帮助OP,就不要评论。@ClassA。提到他们的宽度
0 dp
是不礼貌的?嗯,我学到了新东西。
<Spinner
    android:id="@+id/Tablice"
    android:layout_width="0dp"


    android:layout_height="89dp"
    android:layout_marginBottom="8dp"
    android:layout_marginEnd="6dp"
    android:layout_marginTop="8dp"

    android:background="@null"

    android:popupBackground="@color/uplatiParkingDugme"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toStartOf="@+id/TablicaDugme"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="@+id/guideline"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.25"

    />
customview.measure(0,0);