将文本居中对齐 - 下拉菜单

9

以下是代码:

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);

问题:文本仍然靠左对齐。

1
可能是重复问题 https://dev59.com/sms05IYBdhLWcg3wANPj - Mithun
android:textAlignment="center" -> android:textAlignment="居中" - Sanjit Prasad
8个回答

14

使用以下标签在 spinner 上:

android:textAlignment="center"

这应该被选为正确答案。 - Sanjit Prasad
1
实际上它没有起作用。不确定是因为我正在动态填充微调框。 - JCarlosR
@JCarlosR 兄弟,你找到解决方案了吗? - Ray Rojas

8
只需在默认应用程序主题样式中添加以下两行代码:

只需在默认应用程序主题样式中添加以下两行代码:

<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,这将作为应用程序中默认的下拉菜单样式。


6
<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" 这一行就是制造魔术的关键。


5
在您的Spinner中添加此行:
android:textAlignment="center"

完成!


3

3
在您的布局中添加“主题”属性到Spinner中,如下所示 -
             <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"
                />

并添加样式(在values/style文件中) -


<!-- 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>

享受吧 :)


2

最好的答案并已经经过测试是由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>

0
@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;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接