Подтвердить что ты не робот

Удаление поля из выпадающего списка

У меня есть прядильщик, как показано ниже;

enter image description here

Как я могу удалить пробел слева x между spinner и его выпадающим списком - желательно решение, которое работает на API8, поскольку я стараюсь как можно меньше соблюдать требования к моему приложению.

Я предполагал, что это будет layout_margin в стиле прядильщиков, но после прочтения этого вопроса кажется, что это невозможно.

В моей теме я:

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

Спасибо, Томас

Дополнительно; Я вижу, что может быть способ сделать всплывающее окно в коде - если это необходимо, могу ли я каким-то образом получить всплывающее представление адаптеров? (это список, который он отображает). Попытка воссоздать поведение всех адаптеров с нуля кажется ужасным способом - но если я смогу добраться до этого представления и отключить обычное всплывающее поведение, тогда я смогу сделать свое собственное всплывающее окно без раздражающего смещения.

4b9b3361

Ответ 1

Кажется, вам нужно расширить Spinner View, чтобы создать собственный AlertDialog, который отображает список элементов или в более новой версии (API 16+), которую вы можете использовать

android:dropDownHorizontalOffset="-8dp"

проверьте полную информацию здесь: Как изменить положение открытого счетчика?

Ответ 2

Это то, что вам нужно, например, это?

введите описание изображения здесь

Если это так, вот код (работает до уровня 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>

Ответ 3

Попробуйте, это должно работать

    <style name="DropDownStyle">

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

Ответ 4

Не уверен, но добавьте это в DropDownStyle

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

или вы можете поделиться иерархией ui скриншот

Ответ 5

Я не 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 t делаю это. Кроме того, не забудьте проверить базовый класс Spinner в Android sourcode, возможно, есть какой-то трюк.