[英]Align Text in Center - Spinner
這是代碼:
spinner.xml:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/spinner"
android:layout_width="match_parent"
android:layout_height="40dp"
android:maxLines="1"
android:gravity="center"
android:singleLine="true"
android:textColor="#FFFFFF"
android:textSize="12sp" />
微調器:
<Spinner
android:id="@+id/spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center" />
Java:
array = new ArrayAdapter<String>(Activity.this,
R.layout.spinner, ArrayList);
array .setDropDownViewResource(R.layout.spinner);
Spinner.setAdapter(array );
Spinner.setOnItemSelectedListener(this);
問題:文本仍然與左對齊
在微調器上使用以下標記
android:textAlignment="center"
只需添加您的默認應用主題樣式這兩行:
<item name="android:spinnerItemStyle">@style/spinnerItemStyle</item>
<item name="android:spinnerDropDownItemStyle">
@style/spinnerDropDownItemStyle
</item>
創造新的風格:
<style name="spinnerItemStyle">
<item name="android:gravity">center</item>
</style>
<style name="spinnerDropDownItemStyle">
<item name="android:gravity">center</item>
</style>
而已 !
請注意,此處使用的基本主題是:Theme.AppCompat.Light,它將作為應用程序中的默認微調器樣式應用。
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:ellipsize="marquee"
android:textAlignment="center"
android:textSize="17sp"
tools:ignore="MissingPrefix" />
使用此Textview作為傳遞給適配器的布局。
android:textAlignment="center"
這一行是制造魔法的人
我跟着這個: http : //nevescheng.blogspot.fr/2013/05/spinner-with-item-text-aligned-to-center.html這個工作得很好
我注意到我在value-v11文件夾中有另一個spinner xml並且這個沒有修改,我修改了它並且它的工作
你的布局R.layout.my_spinner_style,
<?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:textColor="#ffffff"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee" />
現在將此適配器設置為您的微調器,
spinner.setAdapter(adapter);
像這樣為你的微調器創建一個適配器,
ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, R.layout.my_spinner_style,array_of_values) {
public View getView(int position, View convertView,ViewGroup parent) {
View v = super.getView(position, convertView, parent);
((TextView) v).setTextSize(16);
return v;
}
public View getDropDownView(int position, View convertView,ViewGroup parent) {
View v = super.getDropDownView(position, convertView,parent);
((TextView) v).setGravity(Gravity.CENTER);
return v;
}
};
最好的答案和測試是由Mouloud
測試的,但在Marshmallow中我必須添加textAlignment
以使下拉列表項居中。 因此,基於Mouloud
代碼的完整代碼是:
<!-- Spinner style -->
<style name="spinnerItemStyle">
<item name="android:textColor">@color/colorAccent</item>
<item name="android:gravity">center</item>
<item name="android:textAlignment" tools:targetApi="jelly_bean_mr1">center</item>
</style>
<!-- Spinner style drop down style-->
<style name="spinnerDropDownItemStyle">
<item name="android:textColor">@color/colorPrimaryDark</item>
<item name="android:gravity">center</item>
<item name="android:textAlignment" tools:targetApi="jelly_bean_mr1">center</item>
</style>
現在將樣式添加到您的主題樣式:
<!-- Change the spinner style-->
<item name="android:spinnerItemStyle">@style/spinnerItemStyle</item>
<item name="android:spinnerDropDownItemStyle">@style/spinnerDropDownItemStyle</item>
在您的布局中,在Spinner中添加“theme”屬性,如 -
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/_10sdp"
android:theme="@style/CustomSpinnerTheme"
android:entries="@array/entries"
android:gravity="center"
/>
並添加樣式(在值/樣式文件中) -
<!-- Spinner style -->
<style name="CustomSpinnerTheme">
<item name="android:textSize">@dimen/_15ssp</item>
<item name="android:textColor">@color/textMainColor</item>
<item name="android:gravity">center</item>
<item name="android:textAlignment">center</item>
</style>
請享用 :)
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView label = new TextView(context);
label.setText(myObjs[position].getText());
label.setGravity(Gravity.CENTER);
return label;
}
@Override
public View getDropDownView(int position, View convertView,
ViewGroup parent) {
TextView label = new TextView(context);
label.setText(myObjs[position].getText());
label.setGravity(Gravity.CENTER);
return label;
}
在你的微調器中添加這一行,
android:textAlignment="center"
完成!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.