ActionbarSherlock - 崩溃时出现有关layout_height属性的list_navigation错误

时间:2013-06-04 18:29:02

标签: android actionbarsherlock

我有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)

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

谢谢!

3 个答案:

答案 0 :(得分:6)

您的问题与this link类似。似乎仍未找到根本原因,但您可以通过调用

来解决它
setTheme(R.style.Theme_Sherlock_Light)

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

android:layout_height="?attr/dropdownListPreferredItemHeight"

android:layout_height="48dp"

答案 1 :(得分:1)

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

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

您可以展开Theme.SherlockTheme.Sherlock.LightTheme.Sherlock.Light.DarkActionBar

答案 2 :(得分:0)

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