gpt4 book ai didi

选择一个选项时,Android Spinner 具有更大的高度

转载 作者:行者123 更新时间:2023-11-29 22:54:22 33 4
gpt4 key购买 nike

在我的布局中,我有 6 个未必显示的微调器。不选的时候高度还不错,选了一个就变大了,网上没查到。

这是没有选择选项的微调器

Without option selected

当选择一个选项时

Spinner with option selected

这是包含微调器的布局:

<LinearLayout
android:id="@+id/layoutDetail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center"
android:orientation="vertical"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/details">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">


<TextView
android:id="@+id/txtDetail1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/black"
android:textSize="@dimen/medium_text"/>

<Spinner
android:id="@+id/spinDetail1"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="@drawable/spinner"/>

</LinearLayout>
... Same thing 5 more times ...
</LinearLayout>

这是我的微调器 java 代码:

private void initializeDetails() {
List<Detail> details = mainAct.details;
detailSpinners = new Spinner[details.size()];

int marginTop = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 16, getResources().getDisplayMetrics());
int marginEnd = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10, getResources().getDisplayMetrics());
int marginStart = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8, getResources().getDisplayMetrics());

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT);

params.gravity = Gravity.TOP;

for (int i = 0; i < details.size(); i++) {
int tvID = getResources().getIdentifier("txtDetail" + (i + 1), "id", mainAct.getPackageName());
int spinID = getResources().getIdentifier("spinDetail" + (i + 1), "id", mainAct.getPackageName());

TextView txtDetail = inputView.findViewById(tvID);
Spinner spinDetail = inputView.findViewById(spinID);

txtDetail.setText(details.get(i).getTitle());
List<String> answers = details.get(i).getAnswers();
answers.add("");
final int answersSize = answers.size() - 1;

ArrayAdapter<String> detailAdapter = new ArrayAdapter<String>(mainAct, R.layout.support_simple_spinner_dropdown_item, answers) {
@Override
public int getCount() {
return answersSize;
}
};

spinDetail.setAdapter(detailAdapter);
spinDetail.setSelection(answersSize);

params.setMargins(marginStart, marginTop, marginEnd, 0);
spinDetail.setLayoutParams(params);
params.setMargins(0, marginTop, marginEnd, 0);
txtDetail.setLayoutParams(params);

detailSpinners[i] = spinDetail;
}
}

我无法为微调器设置 wrap_content 高度,因为如果我这样做,它们将不可见。我不认为 xml 是问题,因为我使用了很多具有相同代码的微调器,而且我从来没有遇到过这个问题。不同之处在于我以编程方式编辑 LayoutParams 并且可能我做错了什么。我只希望微调器保持相同的高度。

最佳答案

在微调器 xml 元素上将 padding 设置为 0。

<Spinner
android:id="@+id/spinDetail1"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:padding="0dp"
android:background="@drawable/spinner"/>

更新:

包装 LinearLayout 的高度为 "wrap_content",而 Spinner 的高度为 "match_parent",假设这与 wrap_content 的行为相同,因为它只是受 LinearLayout 约束。

Spinner 设置指定的像素高度应该可以解决这个问题。

android:layout_height="60dp"

关于选择一个选项时,Android Spinner 具有更大的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57593092/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com