2

我有 ActionbarSherlock 的 list_navigation 的这个实现:

public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Context context = getSupportActionBar().getThemedContext();
    ArrayAdapter<CharSequence> list = ArrayAdapter.createFromResource(
            context, R.array.locations, R.layout.sherlock_spinner_item);
    list.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);

    getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
    getSupportActionBar().setListNavigationCallbacks(list, this);     

这是我的 list_navigation.xml 的 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"
    android:orientation="vertical"
    android:padding="20dip">
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="20dp"
        android:text="@string/list_navigation_content" />
    <TextView
        android:id="@+id/text"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

这是用于导航的项目数组:

<resources>
    <string-array name="locations">
        <item>Home</item>
        <item>Learn</item>
        <item>Services</item>
        <item>Next Steps</item>
    </string-array>
</resources>

并且下拉呈现。当我选择其中一项时会发生崩溃。这是崩溃报告:

java.lang.RuntimeException: Binary XML file line #20: You must supply a layout_height attribute.
        at android.content.res.TypedArray.getLayoutDimension(TypedArray.java:491)
        at android.view.ViewGroup$LayoutParams.setBaseAttributes(ViewGroup.java:5319)
        at android.view.ViewGroup$LayoutParams.<init>(ViewGroup.java:5271)
        at android.view.ViewGroup.generateLayoutParams(ViewGroup.java:4471)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:477)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
        at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:371)
        at android.widget.ArrayAdapter.getDropDownView(ArrayAdapter.java:415)
        at android.widget.Spinner$DropDownAdapter.getDropDownView(Spinner.java:569)
        at android.widget.Spinner$DropDownAdapter.getView(Spinner.java:565)
        at android.widget.Spinner.measureContentWidth(Spinner.java:513)
        at android.widget.Spinner$DropdownPopup.show(Spinner.java:739)
        at android.widget.Spinner.performClick(Spinner.java:453)
        at android.view.View$PerformClick.run(View.java:14105)
        at android.os.Handler.handleCallback(Handler.java:605)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4424)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
        at dalvik.system.NativeStart.main(Native Method)

有谁知道为什么会发生这种情况以及如何解决它?

谢谢!

4

3 回答 3

6

您的问题与此链接类似。似乎还没有找到根本原因,但是您可以通过调用来解决它

setTheme(R.style.Theme_Sherlock_Light)

在您的活动 onCreate() 方法中。或者,您可以修改sherlock_spinner_dropdown_item.xmlin 文件夹actionbarsherlock\res\layout-v14中的行

android:layout_height="?attr/dropdownListPreferredItemHeight"

android:layout_height="48dp"
于 2013-06-12T03:55:36.097 回答
1

确保您的主题扩展了 ActionBarSherlock 库中的主题之一。

<style name="AppTheme" parent="Theme.Sherlock">
    <!-- override theme attributes for your app here -->
</style>

您可以扩展Theme.Sherlock, Theme.Sherlock.Light, 或Theme.Sherlock.Light.DarkActionBar

于 2013-06-04T19:10:48.363 回答
0

我认为在您的 activity_main.xml 第 20 行中,您忘记提供 layout_height 属性。

于 2013-06-10T08:21:26.693 回答