Mic*_*uff 8 android styles android-layout android-spinner android-holo-everywhere
我正在尝试在所有版本的Android上创建与Froyo相同的Spinners.为此,我正在使用HoloEverywhere.一些微调项目文本是多行,我希望它包装.
使用默认布局,android.R.layout.simple_spinner_dropdown_item或者HoloEverywhere的直接替换,可以对文本进行椭圆化处理,而不是将其包裹起来.
将HoloEverywhere的布局作为自定义布局的起点,singleLine设置为false,ellipsize设置为none,并layout_height设置为wrap_content无效,文本仍然被切断.
我可以将文本正确地包装在下拉列表TextView中LinearLayout,但是在Froyo设备上,这会弄乱所选项目的显示:

此方法适用于较新的设备.所有设备上的下拉项目布局都很好.但是当我使用自定义下拉项目布局时,Froyo会将这个奇怪的文本重叠.每个选择都会堆积在最后一个选项之上.
这个问题: Spinner不会包装文本 - 这是一个Android错误吗?关于Spinners中的文本包装建议只有这样才能从头开始重新创建样式而不继承,但这听起来很疯狂并且容易出现问题.
my_simple_list_item_1.xml:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="300dp"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/android:text1"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:ellipsize="marquee"
android:layout_gravity="center_vertical"
android:singleLine="false"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
Java的:
import org.holoeverywhere.widget.Spinner;
spinner1.setAdapter(ArrayAdapter.createFromResource(this,
R.array.array_of_strings, R.layout.my_simple_list_item_1));
Run Code Online (Sandbox Code Playgroud)
我找到了解决方案.文本是包装的,因为微调器初始显示只能处理文本视图,我找到了另一个推荐使用线性布局的解决方案.这使得微调器的下拉看起来正确.事实证明,适配器有一个名为setDropDownViewResource()的资源,它允许您为下拉列表设置不同于微调器选择中显示的视图.
import org.holoeverywhere.widget.Spinner;
ArrayAdapter adapter1 = ArrayAdapter.createFromResource(this,R.array.array_of_strings,R.layout.simple_list_item_1);
adapter1.setDropDownViewResource(R.layout.my_simple_list_item_1);
spQ1.setAdapter(adapter1);
Run Code Online (Sandbox Code Playgroud)
在这个例子中,simple_list_item是android提供的默认视图,mY_simple_list_item是
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="300dp"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/android:text1"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:ellipsize="marquee"
android:layout_gravity="center_vertical"
android:singleLine="false"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
现在,文本包含在微调器的下拉视图内并在微调器显示的选择中.
| 归档时间: |
|
| 查看次数: |
10680 次 |
| 最近记录: |