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);