【问题标题】:How to align text in Spinner for android?如何在 Spinner for android 中对齐文本?
【发布时间】:2014-05-13 18:54:11
【问题描述】:

我想将 Spinner 中的文本向左对齐,但如何实现这一点需要帮助

这是我的代码和屏幕截图

 <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:background="@drawable/roundshape" >

        <!-- Lable Area -->

        <TableRow
            android:id="@+id/tblRwspnLbl"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"           
            android:gravity="center" 
            android:padding="1dip">

            <TextView
                android:id="@+id/lblCust"
                android:layout_width="80dp"
                android:layout_height="wrap_content"
                android:text="@string/lblCust"
                android:textSize="14sp"
                android:textStyle="bold" 
                android:gravity="left"/>

            <TextView
                android:id="@+id/lblPros"
                android:layout_width="80dp"
                android:layout_height="wrap_content"
                android:text="@string/lblPros"
                android:textSize="14sp"
                android:textStyle="bold" />
        </TableRow>

        <!-- Spinner Area -->

        <TableRow
            android:id="@+id/tblRwspn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="1dip"                
            android:gravity="center" >

            <Spinner
                android:id="@+id/spnAECust"
                android:layout_width="75dp"
                android:layout_height="35dp"
                android:fontFamily="verdana,arial,helvetica"
                android:hint="@string/SelectCust"
                android:textSize="14sp" 
                android:layout_gravity="left"/>

            <Spinner
                android:id="@+id/spnAEProspect"
                android:layout_width="75dp"
                android:layout_height="35dp"
                android:fontFamily="verdana,arial,helvetica"
                android:hint="@string/SelectProspect"
                android:textSize="14sp" />
        </TableRow>

        <!-- Text Area -->

这是我的屏幕,红点是我要删除的空间,所以我的所有标签和微调器都将出现在同一条对齐线上

【问题讨论】:

    标签: android spinner


    【解决方案1】:

    只需从 Spinner TableRow 中删除 android:padding="1dip" 并尝试我不确定只是尝试

    编辑: 您必须在此处使用自定义视图来对齐 Spinner 值。创建一个自定义视图,如this 答案已创建并添加android:gravity' to the TextView asright`。

    并使用

    将 CustomView 设置为您的适配器
    adapter.setDropDownViewResource(android.R.layout.your_custom_created_view);
    

    【讨论】:

    • 它用于标签客户和微调器之间的距离,不适用于右侧对齐
    【解决方案2】:

    感谢大家提供所有可能的答案,这是我得到的解决方案

     android:layout_width="75dp"
    
      android:layout_height="35dp"
    
      android:layout_marginLeft="5dp"
    
      android:paddingLeft="5dp"
    
      android:gravity="left"
    

    【讨论】:

      【解决方案3】:

      我认为您应该使用自定义 ArrayAdapterTextView 并根据您的要求使用 textview 属性。

      例子:

      MyAdapter.java

          public class MyAdapter extends ArrayAdapter {
      Context context;
          public MyAdapter(Context context, int resource) {
              super(context, resource);
              this.context=context;
              // TODO Auto-generated constructor stub
          }
      
          @Override
          public View getView(int position, View convertView, ViewGroup parent) {
              // TODO Auto-generated method stub
              LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
              View view=inflater.inflate(R.layout.mylayout, parent,false);
              TextView textView=(TextView)view.findViewById(R.id.text);
      
              return view;
          }
      }
      

      mylayout.xml

       <LinearLayout
              android:layout_width="wrap_content"
              android:layout_height="wrap_content">
          <TextView
               android:id="@+id/text"
               android:layout_width="match-parent"
               android:layout_height="wrap_content"
               android:text="@string/lblPros"
               android:textSize="14sp"
               android:gravity="right"
               android:textStyle="bold" />
      </LinearLayout>
      

      【讨论】:

        【解决方案4】:

        试试这个:-

        使用 android:layout_span="1"。如果需要,则为第一行留出左边距。

        <TableLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:background="@drawable/roundshape" >
        
            <!-- Lable Area -->
        
            <TableRow
                android:id="@+id/tblRwspnLbl"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"           
                android:gravity="center" ">
        
                <TextView
                    android:id="@+id/lblCust"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="@string/lblCust"
                    android:layout_span="1"
                    android:textSize="14sp"
                    android:textStyle="bold" 
                    android:gravity="left"/>
        
                <TextView
                    android:id="@+id/lblPros"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_span="1"
                    android:text="@string/lblPros"
                    android:textSize="14sp"
                    android:textStyle="bold" />
            </TableRow>
        
            <!-- Spinner Area -->
        
            <TableRow
                android:id="@+id/tblRwspn"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"             
                android:gravity="center" >
        
                <Spinner
                    android:id="@+id/spnAECust"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_span="1"
                    android:fontFamily="verdana,arial,helvetica"
                    android:hint="@string/SelectCust"
                    android:textSize="14sp" 
                    android:layout_gravity="left"/>
        
                <Spinner
                    android:id="@+id/spnAEProspect"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_span="1"
                    android:fontFamily="verdana,arial,helvetica"
                    android:hint="@string/SelectProspect"
                    android:textSize="14sp" />
            </TableRow>
        
            <!-- Text Area -->
        

        【讨论】:

          【解决方案5】:

          这是可能有用的示例代码

          <Spinner
                              android:id="@+id/spinner1"
                              style="?android:attr/spinnerStyle"
                              android:layout_width="wrap_content"
                              android:layout_height="wrap_content"
                              android:layout_alignParentRight="true"
                              android:layout_centerVertical="true"
                              android:layout_marginBottom="5dp"
                              android:layout_marginRight="5dp"
                              android:layout_marginTop="5dp"
                              android:background="@drawable/dropdown"
                              android:dropDownVerticalOffset="1dp"
                              android:focusable="false"
                              android:spinnerMode="dropdown" />
          

          为文本视图多取一个布局,下面是布局代码

          spinner_text_layout.xml

          <TextView xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/text_for_spinner"
              style="?android:attr/spinnerItemStyle"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:drawablePadding="10dp"
              android:drawableRight="@drawable/arrow"
              android:gravity="center"
              android:textColor="@android:color/white" >
          
          </TextView>
          

          现在在自定义适配器中,这是两种方法

          @Override
              public View getView(int position, View convertView, ViewGroup parent) {
                  if (convertView == null) {
                      convertView = LayoutInflater.from(context).inflate(
                              R.layout.spinner_text_layout, null);
                  }
                  TextView textView = (TextView) convertView
                          .findViewById(R.id.text_for_spinner);
                  textView.setText((String) getItem(position));
                  notifyDataSetChanged();
                  return convertView;
              }
          
              @Override
              public View getDropDownView(int position, View convertView, ViewGroup parent) {
                  if (convertView == null) {
                      convertView = LayoutInflater.from(context).inflate(
                              R.layout.spinner_text_layout, null);
                  }
                  TextView textView = (TextView) convertView
                          .findViewById(R.id.text_for_spinner);
                  textView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
                  textView.setText((String) getItem(position));
                  textView.setTextColor(Color.BLACK);
                  textView.setBackgroundResource(R.drawable.drop_down_selector);
                  return convertView;
              }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-12-26
            • 1970-01-01
            • 2020-09-06
            • 1970-01-01
            • 2020-12-01
            • 1970-01-01
            相关资源
            最近更新 更多