1

私はAndroidアプリを書いています。私はいくつかのスピナーを持っています。それぞれがスピナーの下部と左側と右側に余分な線を示しています。画像をご覧ください。なぜこれが起こっているのか、そしてそれを修正する方法を誰かが知っていますか?

ここに画像の説明を入力してください

スピナーを定義するxmlファイルのエントリは次のとおりです。

    <Spinner android:id="@+id/formatSpinner"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:drawSelectorOnTop="true"
         android:prompt="@string/format_prompt"/>

そして、これを初期化するコードは次のとおりです。

        cur = mDbHelper.fetchAllFormats();
        adapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, cur,
                new String[]{MoviesDbAdapter.KEY_NAME}, new int[]{android.R.id.text1});
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        formatSpinner.setAdapter(adapter);

ありがとう!

Update1:​​実験を行いましたが、スピナーの前にあるTextViewがXMLファイルから削除されると、スピナーが正しく表示されます。なぜそうなるのか分かりませんが、何かアイデアはありますか?

Update2:また、layout_marginTopをスピナーに追加すると、問題は解決します。これは本当に奇妙です。

4

3 に答える 3

1
<Spinner android:id="@+id/formatSpinner"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:prompt="@string/format_prompt"/>

これを試して..

于 2012-04-17T17:44:34.533 に答える
0

これは明らかにアンドロイドのバグです。他の人が同じ問題に遭遇するのを見てきましたが、誰も良い答えを持っていません. これは、私が最初に考えたように、実際にはスピナー コントロールに描かれている線ではなく、背景色が透けて見えるようにするコントロールの描画の「ギャップ」です。

これを修正または回避するには、スピナーが描画される位置を変更します。これを行うには、最初のスピナーの前に奇数のマージンを追加しました。私の場合、5dpを使用しました。次に、次の 2 つのスピナーに 4dp を使用して、それらがすべて奇数のピクセル番号で始まるようにしました。

これはちょっと醜いですが、これに対する修正が作成されるまでは、これが私が見つけた最良の解決策です.

于 2012-04-23T18:43:57.497 に答える
0

これを試して

<Spinner
    ...            
    style="@style/Widget.AppCompat.Spinner.Underlined"
    ... />
于 2015-08-06T04:11:16.263 に答える