我有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)
有谁知道为什么会发生这种情况以及如何解决这个问题?
谢谢!
答案 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.Sherlock
,Theme.Sherlock.Light
或Theme.Sherlock.Light.DarkActionBar
答案 2 :(得分:0)
我认为在您的activity_main.xml第20行中,您忘记给出layout_height属性。