4

Actionbarsherlockを使用していて、カスタムアクションバーレイアウトを使用したいのですが、それでもナビゲーションリストが必要です。その結果、IcsSpinnerウィジェットを含めています。ただし、幅は常に最大のアイテムと同じくらい大きいため、これは望ましくありません。デバッグするためにアクションバーから切り離しましたが、それでも同じ結果が得られました。

短いテキスト

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

フラグメントコード

public class TestFragment extends SherlockFragment {
private final String[] testStrings = {"Short","Not so long text"};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view=inflater.inflate(R.layout.test_layout, container, false);
    IcsSpinner spinner = (IcsSpinner)view.findViewById(R.id.test_spinner);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
             R.layout.spiner_test_row, R.id.spinner_text, testStrings);
    spinner.setAdapter(adapter);
    return(view);
    }
}

test_layout.xml

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

<com.actionbarsherlock.internal.widget.IcsSpinner
    android:id="@+id/test_spinner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>
</LinearLayout>

R.layout.spinner_test_row

<?xml version="1.0" encoding="utf-8"?>
<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/spinner_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="16sp" />

(ジンジャーブレッドエミュレーターの)標準スピナーへの変更は正常に機能します。

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

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

助言がありますか?

4

1 に答える 1

-1

これは、AndroidのHoneycomb +バージョン(ICSデバイスでSquare Walletなど)を実行している場合でも、ActionBarSherlock内のIcsSpinnerコンポーネントのデフォルトの動作のようです。

Jakeは、IcsSpinnerコンポーネントを使用しないことを提案しましたが、それがないと、カスタムアクションバーレイアウトを使用してナビゲーションリストUIを維持する簡単な方法はありません。ジェイクが提案して代替案を提示できない限り、私はそれを使い続け、彼の素晴らしいライブラリの将来のリリースで完全なテストを行うようにしてください。

于 2012-10-11T02:29:24.087 に答える