背景
我希望在 PreferenceActivity 上显示一个 ActionBar,因为它不适用于预蜂窝设备(即使在支持库中)。
因为支持库中没有这样的类,所以我不能只调用 "setSupportActionBar" 。我也不希望使用库(比如这个),因为我发现的所有库仍然使用 Holo 样式,所以到目前为止它们没有得到更新,考虑到这一点。
为此,我试图将 ActionBar 标题的外观和感觉模仿到新的Toolbar类中,该类在支持库 v7 上提供。
问题
我已经成功地放置了一个标题和一个“向上”按钮,但我不知道如何让它们像普通操作栏一样可点击,包括触摸的效果。
编码
这是代码:
SettingsActivity.java
public class SettingsActivity extends PreferenceActivity
{
@Override
protected void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
addPreferencesFromResource(R.xml.pref_general);
final Toolbar toolbar=(Toolbar)findViewById(R.id.toolbar);
toolbar.setBackgroundColor(getResources().getColor(R.color.windowBackgroundColor));
toolbar.setTitle("Settings");
toolbar.setClickable(true);
toolbar.setLogo(getResIdFromAttribute(this,R.attr.homeAsUpIndicator));
}
public static int getResIdFromAttribute(final Activity activity,final int attr)
{
if(attr==0)
return 0;
final TypedValue typedvalueattr=new TypedValue();
activity.getTheme().resolveAttribute(attr,typedvalueattr,true);
return typedvalueattr.resourceId;
}
}
活动设置.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.antonioleiva.materialeverywhere.SettingsActivity" >
<include
android:id="@+id/toolbar"
layout="@layout/toolbar" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<View
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/abs__ab_solid_shadow_holo" />
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
</LinearLayout>
我试过的
我已经尝试了 Toolbar 类的所有点击侦听器类型,但没有任何帮助。
几乎唯一有效的是使用“setNavigationIcon”而不是“setLogo”,但这实际上使标题和图标变得可点击,但只有图标显示其被点击的效果(即使我点击标题)。
问题
如何添加工具栏的外观和感觉,使其标题和徽标看起来像操作栏?