【问题标题】:android toolbar inside a tab选项卡内的android工具栏
【发布时间】:2015-08-14 02:49:46
【问题描述】:

我想在我的一个选项卡中创建一个工具栏,但对我没有任何帮助。这甚至可以做到吗?我目前在我的选项卡上方有一个工具栏,但我需要它出现在第一个选项卡内。

这是代码(带有标签上方的工具栏):

import ...

public class MainActivity extends ActionBarActivity {

Toolbar toolbar;
ViewPager pager;
ViewPagerAdapter adapter;
SlidingTabLayout tabs;
CharSequence Titles[] = {"Projects", "People", "Files"};
int Numboftabs = 3;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    toolbar = (Toolbar) findViewById(R.id.tool_bar);
    setSupportActionBar(toolbar);

    adapter = new ViewPagerAdapter(getSupportFragmentManager(), Titles, Numboftabs);
    pager = (ViewPager) findViewById(R.id.pager);
    pager.setAdapter(adapter);
    tabs = (SlidingTabLayout) findViewById(R.id.tabs);
    tabs.setDistributeEvenly(true); 
    tabs.setViewPager(pager);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_primary, menu);
    return true;
}

final ArrayList<String> listItems = new ArrayList<String>();

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    if (id == R.id.addButton) {
        final TextView noProject = (TextView) findViewById(R.id.NOPROJECT);
        final ListAdapter addAdapter = new ArrayAdapter<String>(this,
                R.layout.list_item, R.id.listFrame, listItems);
        final ListView lv = (ListView) findViewById(R.id.lv);
        lv.setAdapter(addAdapter);

        noProject.setVisibility(View.GONE);
        lv.setVisibility(View.VISIBLE);
        listItems.add("New Project");

        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent switchToEdit = new Intent(MainActivity.this,
                        TeamCreate.class);
                startActivity(switchToEdit);
            }
        });
    }
    return super.onOptionsItemSelected(item);
}
}

第一个标签:

import ...

public class Tab1 extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v =inflater.inflate(R.layout.tab_1,container,false);
    return v;
}
}

【问题讨论】:

  • 而不是使用setSupportActionBar(),您应该能够将Toolbar 放入Tab1 的布局中,AFAIK。我还没有机会和Toolbar 一起玩,虽然我确实需要抽出时间来做这件事......
  • @CommonsWare 你能给出一个代码示例吗?我对 android 和 java 比较陌生,怕我搞砸了
  • "你能给出一个代码示例吗?" -- 不,因为正如我所写,我还没有机会玩Toolbar。在 android toolbar layout 上的 Google 搜索会出现 stackoverflow.com/questions/26708230/…101apps.co.za/index.php/articles/… 等等。

标签: java android tabs toolbar


【解决方案1】:

我在使用非标准工具栏和选项卡时遇到了类似的挑战,并且克服了它,但坦率地说,结果看起来很奇怪。您可能可以使用类似的技术让工具栏在选项卡下工作,但它可能会让您的用户摸不着头脑。您的技术将有 2 个工具栏,一个包含 TabLayout 小部件,另一个位于 ViewPager 的片段中。

我在我的应用程序的详细视图中使用了 Material Design 选项卡。在我为平板电脑制作 2 窗格主从视图之前,它看起来还不错。然后我遇到了希望直接位于工具栏下方的选项卡的问题,但是没有明显的方法可以让 Master & Detail 共享工具栏,而选项卡仅显示在屏幕的 Detail 部分下。

我得到了它的工作:

  1. 在styles.xml 中创建一个“NoActionBar”样式,然后使用“android:theme="@style/AppTheme" 在主布局中引用它。

    <!-- Turn off normal application bar so we can put our toolbars where we please.
     Do this by replacing "Theme.AppCompat.Light.DarkActionBar" with NoActionBar
     per http://www.truiton.com/2015/04/android-action-bar-dialog-using-toolbar/ -->
    <style name="AppTheme" parent="MaterialTheme.Base"/>
    <style name="MaterialTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="windowNoTitle">true</item>
    <!--We will be using the toolbar so no need to show ActionBar-->
    <item name="windowActionBar">false</item>
    
  2. 折腾 android.support.design.widget.CoordinatorLayout 并使用 LinearLayout。

  3. 这是一个 sn-p,其中包含选项卡的工具栏仅占据屏幕的一部分而不是整个宽度。请注意,工具栏有“app:layout_scrollFlags="scroll|enterAlways":

      <FrameLayout android:id="@+id/detail_container"
             android:layout_width="0dp"
             android:layout_height="match_parent"
             android:layout_gravity="end"
             android:layout_weight="2"
             tools:name="com.android.bazemom.popularmovies.TabContainerFragment"
    >
    <!-- second toolbar that will be used for the tabs -->
    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        android:minHeight="?attr/actionBarSize"
        app:layout_scrollFlags="scroll|enterAlways"
        />
    
    <android.support.design.widget.TabLayout
        android:id="@+id/tabanim_tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />
    
    <!-- Helps handing the Fragments to load for each Tab -->
    <android.support.v4.view.ViewPager
        android:id="@+id/tabanim_viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
    

这是宽平板电脑上的主从视图的外观。选项卡以绿色圈出。带有操作的工具栏位于选项卡上方。

【讨论】:

    猜你喜欢
    • 2011-07-10
    • 1970-01-01
    • 2015-03-01
    • 2014-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多