Android工具栏" Up"自定义实现中的箭头

时间:2014-12-16 22:06:09

标签: android android-actionbar android-navigation android-toolbar

我正在制作一个非常自定义的工具栏(不要发疯,它是好的,不是邪恶的,我保证),我想要放置“向上”箭头(当有父活动集时出现的箭头或由于其他原因,并且在自定义位置对Lollipop具有良好的波纹触摸效果。

有没有办法让此箭头作为视图或资源使用工具栏中的其他位置?

我甚至找不到箭头的图像资源。有什么想法吗?

举个例子,我希望top能够做类似的事情:

mToolbar.addView(arrowView, 0);
mToolbar.addView(titleView, 1);

3 个答案:

答案 0 :(得分:1)

也许this会有所帮助,看起来像你想要的东西,或者你想要一个具有不同位置和视图的完全自定义按钮?

答案 1 :(得分:1)

如果您不想在Toolbar中将箭头图标设置为自定义视图,您也可以将内容说明设置为导航按钮,稍后查找视图参考。每个ViewViewGroup都支持finding views with content description

public static View getNavigationIcon(Toolbar toolbar){
    //check if contentDescription previously was set
    boolean hadContentDescription = TextUtils.isEmpty(toolbar.getNavigationContentDescription());
    String contentDescription = !hadContentDescription ? toolbar.getNavigationContentDescription() : "navigationIcon";
    toolbar.setNavigationContentDescription(contentDescription);
    ArrayList<View> potentialViews = new ArrayList<View>();
    //find the view based on it's content description, set programatically or with android:contentDescription
    toolbar.findViewsWithText(potentialViews,contentDescription, View.FIND_VIEWS_WITH_CONTENT_DESCRIPTION);
    //Nav icon is always instantiated at this point because calling setNavigationContentDescription ensures its existence 
    View navIcon = null;
    if(potentialViews.size() > 0){
        navIcon = potentialViews.get(0); //navigation icon is ImageButton
    }
     //Clear content description if not previously present
    if(hadContentDescription)
        toolbar.setNavigationContentDescription(null);
    return navIcon;
 }

答案 2 :(得分:0)

工具栏本身就是一个ViewGroup,你可以为例如。

添加不同的视图
<android.support.v7.widget.Toolbar
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:minHeight="?attr/actionBarSize"
    app:theme="@style/ThemeOverlay.AppCompat.ActionBar" >

     <TextView ..../>
     <ImageView ...../>
</android.support.v7.widget.Toolbar>

请参考您的工具栏及其java代码中的元素,以便将其控制为:

Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
ImageView img = (ImageView) toolbar.findViewById(R.id.imgv);