【问题标题】:How to change Toolbar layout after listitems selection in android activity如何在 android 活动中选择列表项后更改工具栏布局
【发布时间】:2015-12-22 15:43:50
【问题描述】:

我已经创建了一个带有工具栏和 recyclerview 的活动,实现了 recyclerview 的选择选项,在选择列表项后我需要更新工具栏中的选定项目计数。我正在尝试通过使用来实现这一点

    @Override
public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
    // Inflate a menu resource providing context menu items
    MenuInflater inflater = actionMode.getMenuInflater();
    inflater.inflate(R.menu.menu_cab_recyclerviewdemoactivity, menu);

    return true;
}

现在选择recyclerview items后,工具栏上方添加了额外的actionbar,这里是屏幕http://screencast.com/t/UY2KSs9r

【问题讨论】:

  • 您到底在哪里遇到问题?请说清楚。
  • 我也分享了截图,添加了额外的操作栏是问题,在代码中我认为问题出在 onCreateActionMode();
  • 我认为您应该直接操作工具栏标题,而不是膨胀菜单。
  • 很好,实际上我想更改工具栏的布局而不是名称,bcz 我在工具栏中还有一些操作项,即在选择 recyclerview 项目后复制、粘贴、删除。你能请一次我的问题吗.

标签: android android-actionbar android-toolbar


【解决方案1】:

如果你只是想更新工具栏中的计数,你可以只更新标题,

final ActionBar ab = getSupportActionBar();
if(ab!=null)
    ab.setTitle(stringVariable);

我不确定你还想做什么,所以现在这是我的答案。

【讨论】:

    【解决方案2】:

    首先去掉默认的ActionBar

    编辑你的 style.xml

     <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme colors here. -->
        <item name="colorPrimary">@color/primary</item>
        <item name="colorPrimaryDark">@color/primary_dark</item>
        <item name="colorAccent">@color/accent</item>
    
        <!-- Disables the Default ActionBar -->
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>
    

    然后在您的 main_activity_layout.xml 中,删除根 RelativeLayout 标记上的所有填充。

    下一个

     <android.support.v7.widget.Toolbar
            android:id="@+id/mainToolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <ImageButton
                android:id="@+id/main_settings_btn"
                android:background="@drawable/ic_settings"
                android:backgroundTint="@color/accent"
                android:contentDescription="Copy"/>
    
            <ImageButton
                android:layout_alignParentEnd="true"
                android:layout_alignParentRight="true"
                android:layout_gravity="right"
                android:layout_marginRight="10dp"
                android:background="@drawable/ic_points"
                android:backgroundTint="@color/accent"
                android:contentDescription="Paste"/>
    
        </android.support.v7.widget.Toolbar>
        ...... <your_code_here_possibly_recyclerview>
    

    这解决了您的额外工具栏问题。

    下一个

    private Toolbar toolbar;                              // Declaring the Toolbar Object
    
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        toolbar = (Toolbar) findViewById(R.id.mainToolbar); // Attaching the layout to the toolbar object
        setSupportActionBar(toolbar);                   // Setting toolbar as the ActionBar with setSupportActionBar() call
    
       // Now whenever you want to update the title just change text in below 
       getSupportActionBar().setTitle("My title"); 
    
    }
    

    【讨论】:

    • 我可以使用工具栏和recyclerview创建活动,recyclerview项目选择后需要更改工具栏。
    • 您知道项目何时被选中吗?每当您选择一个项目时,您只需将一个值添加到一个整数变量,然后通过调用 getSupportActionBar().setTitle(String.valueOf(selectedTotalInt); 更新您的工具栏标题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 2017-01-29
    相关资源
    最近更新 更多