簡體   English   中英

在中心對齊文本 - 微調器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM