【问题标题】:Android - Text is Pushed to the Left in a SpinnerAndroid - 文本在微调器中被推到左侧
【发布时间】:2016-09-29 16:12:34
【问题描述】:

我有一个风格独特的微调器。该样式仅包含微调器的背景。问题是,无论我使用哪个图像作为背景,微调器的文本总是被推到左边。

这是 Spinner 在 XML 中的声明 -

<Spinner
 android:layout_height="wrap_content"
 android:layout_toRightOf="@+id/minus"
 android:layout_width="wrap_content"
 android:layout_below="@+id/female"
 android:id="@+id/spin"
 android:gravity="center"
 android:background="@drawable/spin"
 android:layout_marginTop="10dip">
 </Spinner>

此外,我在 android:gravity 属性下收到一条警告,指出它是未知的 XML 属性。

我不知道为什么会这样。

谢谢

【问题讨论】:

  • 您是否发布了完整的最少代码和资源,例如复制您的问题所需的图像文件,以及问题的屏幕截图,甚至可能是目标的模型或屏幕截图,它' d 可能会帮助别人帮助你。
  • 不幸的是,您仍然没有提供完整的最小代码来复制您的问题,因此潜在的帮助者只能猜测丢失的代码可能是什么样子。你在使用 android.R.layout.simple_spinner_dropdown_item 和 android.R.layout.simple_spinner_item 吗?我不知道,但我猜你是。解决您的问题的方法是不使用这两个简单的布局,而是提供自定义布局。

标签: android


【解决方案1】:

继续我上面的上一条评论...

以下代码修改了the Hello Spinner tutorial application,以水平居中显示微调器文本内容,如以下两个屏幕截图所示。

res/layout/my_spinner_textview.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    style="?android:attr/spinnerItemStyle"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center" />
public class HelloSpinner extends Activity
{
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Spinner spinner = (Spinner) findViewById(R.id.spinner);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.planets_array,
//        android.R.layout.simple_spinner_item);
        R.layout.my_spinner_textview);
//    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    adapter.setDropDownViewResource(R.layout.my_spinner_textview);
    spinner.setAdapter(adapter);
    spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());
  }

  //No other modification needed.

这有望为解决问题提供足够的方向。

【讨论】:

  • 但是您看不到复选框?
  • 如何为微调器中的各个项目添加填充?
  • android:paddingBottom="10dp" android:paddingTop="10dp" - 为空间添加填充
【解决方案2】:

在微调器上使用 android:textAlignment="center" 标签

 <android.support.v7.widget.AppCompatSpinner
        android:id="@+id/state"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAlignment="center"/>

【讨论】:

    【解决方案3】:

    在您的 xml 文件中添加重力...

    <Spinner
     android:gravity="center">
    </Spinner>
    

    或者在你的 java 代码中添加重力...

    Spinner spinner = (Spinner)findViewById(R.id.spinner);
    spinner.setGravity(17);
    //17 = center
    

    【讨论】:

    • 你有没有弄清楚缺少什么?接受的答案也有重力属性,但代码本身似乎是多余的,因为我的微调器是从 XML 设置的,不需要任何代码。
    【解决方案4】:

    我也遇到了这个问题,接受的答案对我不起作用。

    如果这也适用于您,请确保没有父布局覆盖微调器项目的重力。就我而言,我必须将整个 Spinner 的重力设置为正确。

    【讨论】:

      【解决方案5】:

      如果您想在使用自己的布局时查看下拉菜单中的复选框:

      ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                  mContext, R.array.room_list, R.layout.spinner_layout);
          adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
          yourSpinner.setAdapter(adapter);
      

      请注意放置下拉视图资源的行中“R.layout....”之前的“android”!

      【讨论】:

        猜你喜欢
        • 2021-11-29
        • 1970-01-01
        • 2019-11-30
        • 2016-03-13
        • 2018-03-01
        • 2021-01-25
        • 2021-03-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多