web-dev-qa-db-ja.com

スピナードロップダウンからマージンを削除する

下の画像のようなスピナーがあります。

enter image description here

スピナーとそのドロップダウンの間の左側のxのギャップを削除するにはどうすればよいですか?アプリの要件をできるだけ低く抑えようとしているため、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>

ありがとう、トーマス

追加;コードで自分でポップアップを作成する方法があるかもしれないことがわかります-これが必要な場合は、どういうわけかアダプターのポップアップビューにアクセスできますか? (それはそれが表示するリストです)。アダプター全体の動作を最初から再現しようとすると、ひどい方法のように見えますが、そのビューにアクセスして通常のポップアップ動作を無効にできれば、煩わしいオフセットなしで独自のポップアップを作成できます。

20
darkflame

アイテムのリストを表示する独自のAlertDialogを作成するには、スピナービューを拡張する必要があるようです。または、新しいバージョン(API 16以降)では使用できます。

Android:dropDownHorizontalOffset="-8dp"

ここで完全な詳細を確認してください: 開いたスピナーの位置を変更する方法は?

3
Mohammad Ersan

あなたはこのようなものが欲しいですか?

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

これを試してください、これはうまくいくはずです

    <style name="DropDownStyle">

   <item name="Android:layout_width">0dp</item>
0
Prabhuraj