现在的位置: 首页 > 综合 > 正文

静态fragment实现底部菜单tab

2016年12月22日 ⁄ 综合 ⁄ 共 3516字 ⁄ 字号 评论关闭

如图:


这样的设计风格看起来很清爽,不过现在这种风格也慢慢变少了很多,中国的产品经理都是抄抄大公司的界面,没啥好说的

在3.0以前可能大家会有二种实现方式

1:TabActivity

2:如果好几个界面都有的话,抽取一个layout,然后再每一个布局中inclde这个layout即可

在3.0以后多了一个选择,Fragment,


使用静态的fragment来实现上述功能

首先看layout:

<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"
     >
    <fragment
        android:id="@+id/fragment"
        android:name="com.example.fragment.NewFragMent"  
        android:layout_width="fill_parent"
        android:layout_height="300dp"
         />
    <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
        <Button 
            android:id="@+id/btn_news"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="新闻"
            android:layout_weight="1"
            />
        <Button 
            android:id="@+id/btn_entertainment"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="娱乐"
            android:layout_weight="1"
            />
        <Button 
            android:id="@+id/btn_political"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="政治"
            android:layout_weight="1"
            />
        <Button 
            android:id="@+id/btn_sports"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="体育"
            android:layout_weight="1"
            />
    </LinearLayout>
</LinearLayout>

要实现的功能就是点击下面四个按钮,内容进行切换

NewFragMent.java

public class NewFragMent extends Fragment {
private TextView tv_content;
private View rootView;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.activity_news, null);
tv_content = (TextView) rootView.findViewById(R.id.tv_content);
Log.e("click","你大爷的");
return rootView;
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}

public void  setContentMsg(String msg){
tv_content.setText(msg);
}
}


MainActivity.java

public class MainActivity extends FragmentActivity implements OnClickListener {
private Button btn_news;
private Button btn_entertainment;
private Button btn_political;
private Button btn_sports;
private NewFragMent newFragMent;
FragmentTransaction transaction;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        btn_news = (Button) findViewById(R.id.btn_news);
        btn_entertainment = (Button) findViewById(R.id.btn_entertainment);
        btn_political = (Button) findViewById(R.id.btn_political);
        btn_sports = (Button) findViewById(R.id.btn_sports);
        
        
        FragmentManager fragmentManager = getSupportFragmentManager();
        newFragMent = (NewFragMent) fragmentManager.findFragmentById(R.id.fragment);
        newFragMent.setContentMsg("新闻");
        
        btn_news.setOnClickListener(this);
        btn_entertainment.setOnClickListener(this);
        btn_political.setOnClickListener(this);
        btn_sports.setOnClickListener(this);
    }
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_news:
newFragMent.setContentMsg("新闻");
Log.e("click","新闻");
break;
case R.id.btn_entertainment:
newFragMent.setContentMsg("娱乐");
Log.e("click","娱乐");
break;
case R.id.btn_political:
newFragMent.setContentMsg("政治");
Log.e("click","政治");
break;
case R.id.btn_sports:
newFragMent.setContentMsg("体育");
Log.e("click","体育");
break;
}
}
@Override
protected void onResume() {
super.onResume();
}
}

效果图:





抱歉!评论已关闭.