【发布时间】:2018-05-11 12:41:46
【问题描述】:
我正在开发一个 android 应用程序 - 我正在使用带有 textView 和微调器的 Horizontal LinearLayout。
在某些屏幕分辨率下,一切正常,但在其他一些屏幕上,它不显示我在微调器中选择的内容。
这是我设计的方式:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="21"
android:orientation="horizontal">
<Spinner
android:id="@+id/nightEndHoursSpinner"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:layout_weight="4"
/>
<TextView
android:id="@+id/nightEndSep"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text=":"
android:textSize="30sp" />
<Spinner
android:id="@+id/nightEndMinutesSpinner"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="4"
/>
<TextView
android:id="@+id/nightEndTextView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="20sp"
android:text="@string/to"
android:textDirection="anyRtl"
android:gravity="end"
android:layout_marginEnd="5dp"
android:layout_weight="2"
/>
<Spinner
android:id="@+id/nightStartHoursSpinner"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:textDirection="anyRtl"
android:gravity="end"
android:textAlignment="gravity"
android:layout_weight="4"
/>
<TextView
android:id="@+id/nightStartSep"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text=":"
android:textSize="30sp" />
<Spinner
android:id="@+id/nightStartMinutesSpinner"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="4"
/>
<TextView
android:id="@+id/nightFromTextView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="20sp"
android:layout_marginEnd="5dp"
android:text="@string/from"
android:textDirection="anyRtl"
android:gravity="end"
android:textAlignment="gravity"
android:layout_weight="2"
/>
</LinearLayout>
图片显示问题: no text in spinners
Java 代码: 初始化微调器:
private void initializeSpinners() {
ArrayList<String> hoursList = range(0, 23);
ArrayAdapter<String> hoursAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, hoursList);
hoursAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
morningStartHoursSpinner.setAdapter(hoursAdapter);
nightStartHoursSpinner.setAdapter(hoursAdapter);
morningEndHoursSpinner.setAdapter(hoursAdapter);
nightEndHoursSpinner.setAdapter(hoursAdapter);
ArrayList<String> minutesList = range(0, 59);
ArrayAdapter<String> minutesAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, minutesList);
minutesAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
morningStartMinutesSpinner.setAdapter(minutesAdapter);
nightStartMinutesSpinner.setAdapter(minutesAdapter);
morningEndMinutesSpinner.setAdapter(minutesAdapter);
nightEndMinutesSpinner.setAdapter(minutesAdapter);
updateSpinners(hoursList, minutesList);
}
private void updateSpinners(ArrayList<String> hoursList, ArrayList<String> minutesList) {
String startMorningTime = DatabaseMgr.getPreferences(getString(R.string.saved_morning_start_time), this);
updateSpinner(morningStartHoursSpinner, morningStartMinutesSpinner, startMorningTime, hoursList, minutesList, 9);
String endMorningTime = DatabaseMgr.getPreferences(getString(R.string.saved_morning_end_time), this);
updateSpinner(morningEndHoursSpinner, morningEndMinutesSpinner, endMorningTime, hoursList, minutesList, 11);
String startNightTime = DatabaseMgr.getPreferences(getString(R.string.saved_night_start_time), this);
updateSpinner(nightStartHoursSpinner, nightStartMinutesSpinner, startNightTime, hoursList, minutesList, 19);
String endNightTime = DatabaseMgr.getPreferences(getString(R.string.saved_night_end_time), this);
updateSpinner(nightEndHoursSpinner, nightEndMinutesSpinner, endNightTime, hoursList, minutesList, 21);
}
private void updateSpinner(Spinner hoursSpinner, Spinner minsSpinner, String time, ArrayList<String> hoursList, ArrayList<String> minutesList, int defaultHoursIdx) {
if (time == null || time.equals("")) {
hoursSpinner.setSelection(defaultHoursIdx);
return;
}
String hours = time.split(":")[0];
int hoursIdx = hoursList.indexOf(hours);
String mins = time.split(":")[1];
int minsIdx = minutesList.indexOf(mins);
hoursSpinner.setSelection(hoursIdx);
minsSpinner.setSelection(minsIdx);
}
simple_spinner_item.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerItemStyle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:textAlignment="inherit"/>
spinnerAdapater 是一个 ArrayList
我没有覆盖 java 中的任何微调器属性。
我的代码有什么问题? 我应该如何设计它?使其适用于所有屏幕分辨率
非常感谢!!
【问题讨论】:
-
分享你的java类。
-
您需要包括您的活动,可能还包括所涉及的适配器。
-
@HemantParmar 添加了
-
@Juan 我添加了初始化微调器的 java 代码
-
另外请添加 updateSpinner(hoursList, minutesList);
标签: android android-layout android-linearlayout android-designer