【问题标题】:How to implement two fragments in single view?如何在单个视图中实现两个片段?
【发布时间】:2012-09-13 06:34:40
【问题描述】:

我有一个包含 3 个片段的应用程序。它工作正常的viewpager。

但我需要在 Android Play 商店中实现类似的视图。最初他们有“特色”标签。当您向左滑动时,我们可以看到“类别”选项卡。

但屏幕的一半仍然充满了“精选”标签内容。如何实现该视图?有什么想法吗?

【问题讨论】:

标签: android android-layout android-fragments android-viewpager android-view


【解决方案1】:

这是真正的答案。隔了很久才发。

在你的适配器中添加这个方法:

@Override
public float getPageWidth(int position) {
if (position == 0) {
    return(0.5f);
} else {
    return (1.0f);       
}
}

【讨论】:

    【解决方案2】:

    查看ViewPagerIndicator

    如果您想看看它的外观,请先尝试sample

    您想要的是 Titles 部分。

    【讨论】:

    • 我已经调查过了。但这并不是我真正想要的。
    • 您究竟缺少哪个功能?瓷砖被切成两半?因为这是我注意到的唯一区别。
    • 是的。这是我唯一需要的功能。
    【解决方案3】:

    为了在一个视图中显示两个片段,您可以添加一个布局,其宽度和高度将在一个片段的布局中包装内容,然后在您的 onCreateView 上使用片段管理器添加另一个片段。 代码会是这样——

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
        <LinearLayout 
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="horizontal"
            >
            <LinearLayout 
                 android:id="@+id/ll1"
                 android:layout_width="wrap_content"
                 android:layout_height="fill_parent"
                 android:orientation="vertical"
                 >
    
            </LinearLayout>
            <LinearLayout 
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        >
        <Button 
        android:id="@+id/tb"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="test"/>
    
    
    </LinearLayout>
    

    而 onCreate 会像 --

    View view ;
    
    boolean isVisible = false;
    
    FragmentManager fm;
    FragmentTransaction ft;
    Fragment menuFragment;
    LinearLayout llList;
    
    @Override
    public View onCreateView(LayoutInflater inflater,  ViewGroup container, Bundle savedInstanceState) {
    
        view = inflater.inflate(R.layout.main, container, false);
        llList = (LinearLayout) view.findViewById(R.id.ll1);
        menuFragment = new frg1();
        fm = getFragmentManager();
    
    
        Button tb = (Button) view.findViewById(R.id.tb);
        tb.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
    
                if(!isVisible) {
    
                    isVisible = true;
                    showList();
                }
                else {
    
                    isVisible = false;
                    hideList();
                }
    
            }
        });
    
        return view;
    }
    
    
    private void changeDisplay() {
    
        Display display = getActivity().getWindowManager().getDefaultDisplay();
        int width = (int) (display.getWidth() * 0.8 );
        int height = (int) (display.getHeight() * 0.8);
    
        if(isVisible) 
        {
            llList.setLayoutParams(new LinearLayout.LayoutParams(width, LayoutParams.FILL_PARENT));
            //lllList.setLayoutParams(new LinearLayout.LayoutParams(p))
        }
        else {
            llList.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT));
            //llList.scrollTo(0, 0);
        }
    }
    
    private void showList() {
    
        changeDisplay();
    
        ft = fm.beginTransaction();
        ft.add(R.id.ll1, menuFragment);
        ft.commit();
    }
    
    private void hideList() {
    
        changeDisplay();
    
        ft = fm.beginTransaction();
        ft.remove(menuFragment);
        ft.commit();
    }
    

    【讨论】:

    • 谢谢哥们。我会尽力让你知道。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多