gpt4 book ai didi

android - 如何使工具栏标题完全像在 ActionBar 上一样可点击,而不将其设置为 ActionBar?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:16:08 37 4
gpt4 key购买 nike

背景

我希望在 PreferenceActivity 上显示一个 ActionBar,因为它不适用于 Honeycomb 之前的设备(即使在支持库中)。

因为这样的类在支持库中不可用,所以我不能只调用“setSupportActionBar”。我也不希望使用库(如 this one ),因为我发现的所有库仍然使用 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;
}
}

activity_settings.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”,但这实际上使标题和图标可点击,但只有图标显示其被点击的效果(即使我点击标题)。

问题

如何添加工具栏的外观,使其标题和 Logo 看起来像操作栏?

最佳答案

我遇到了同样的问题,并找到了一个非常方便的方法(对于可点击的标题),使用 Toolbar 来完成。没关系,如果 Toolbar 用作 ActionBar 或不用作,它适用于这两种情况。

只需在 Toolbar 本身上设置点击监听器,这将导致完整的 Toolbar 触发点击监听器,如果不是菜单项或主页图标被点击.对我来说,这正是我所期望的......

例如:

 setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
toolbar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getThis(), "Toolbar title clicked", Toast.LENGTH_SHORT).show();
}
});

onOptionsItemSelected、主页点击和类似的不会触发onClick 事件。看起来是个不错的解决方案

关于android - 如何使工具栏标题完全像在 ActionBar 上一样可点击,而不将其设置为 ActionBar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26495530/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com