从微调器下拉列表中删除边距

时间:2014-05-22 21:52:06

标签: android android-layout spinner android-spinner

我有一个如下图所示的微调器;

enter image description here

如何删除微调器及其下拉列表左侧x上的间隙 - 最好是一个适用于API8的解决方案,因为我试图尽可能降低我的应用程序要求。

我原本认为这将是spinners风格的layout_margin,但在阅读this question后,似乎不可能。

在我的主题中,我有;

<style name="AppTheme" parent="AppBaseTheme">        
        <item name="android:dropDownListViewStyle">@style/DropDownStyle</item>
    <item name="android:dropDownSelector">@style/DropDownStyle</item>                
</style>


<style name="DropDownTopStyle">

   <item name="android:clickable">true</item>
   <item name="android:background">@drawable/dropdowntop</item>

</style>

<style name="DropDownStyle">

   <item name="android:layout_width">fill_parent</item>
   <item name="android:layout_height">fill_parent</item> 
   <item name="android:layout_marginLeft">0dp</item> 
   <item name="android:layout_margin">0dp</item> 

   <item name="android:clickable">true</item>
   <item name="android:background">@drawable/dropdownback</item>
   <item name="android:popupBackground">@drawable/dropdownback</item>
   <item name="android:cacheColorHint">#FFF000</item>    
  </style>

谢谢, 托马斯

附加; 我可以看到可能有一种方法可以自己在代码中弹出一个弹出窗口 - 如果有必要,我可以以某种方式进入适配器弹出视图吗? (这是它显示的列表)。尝试从头开始重新创建整个适配器行为似乎是一种可怕的方式 - 但如果我可以进入该视图并禁用正常的弹出行为,那么我可以创建自己的弹出窗口,而不会产生烦人的偏移。

5 个答案:

答案 0 :(得分:3)

似乎您需要扩展Spinner视图以制作显示项目列表的自己的AlertDialog,或者您可以使用的较新版本(API 16+)

android:dropDownHorizontalOffset="-8dp"

点击此处查看详细信息:How to change the position of opened spinner?

答案 1 :(得分:1)

你想要的是这样的吗?

enter image description here

如果是这样,这里是代码(直到API级别9):

<强>活动:

public class MainActivity extends Activity
{
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Spinner spinnerListOptions = (Spinner) findViewById(R.id.spinner);
        ArrayAdapter<CharSequence> adapterListOptions = ArrayAdapter.createFromResource(this, R.array.string_array,
            R.layout.spinner_item_top);
        adapterListOptions.setDropDownViewResource(R.layout.spinner_item_dropdown);
        spinnerListOptions.setAdapter(adapterListOptions);
    }
}

<强> spinner_item_top.xml:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="wrap_content"
      android:layout_height="29dp"
      android:textSize="12sp"
      android:gravity="center">
</TextView>

<强> spinner_item_dropdown.xml:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="wrap_content"
      android:layout_height="29dp"
      android:textSize="12sp"
      android:gravity="center">
</TextView>

<强> activity_main.xml中:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

   <Spinner
           android:id="@+id/spinner"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_centerInParent="true"/>

</RelativeLayout>

<强>的strings.xml:

<resources>
<string-array name="string_array">
    <item>item 1</item>
    <item>item 2</item>
    <item>item 3</item>
</string-array>
</resources>

答案 2 :(得分:0)

试试这个,这应该有效

BigDecimal

答案 3 :(得分:-1)

我不确定但是将它添加到DropDownStyle

     <item name="android:padding">0dp</item>

或者您可以分享ui hierarchy屏幕截图

答案 4 :(得分:-3)

我不t know it is possible, because all view item like Spinner, EditText, etc... are small images in the android SDK. You should check, is there any default padding in the 9patched SDK image, if yes, I think you can这样做。 另外,不要忘记检查Android sourcode中的基本Spinner类,也许有一些技巧。