android的title使用了fragment,为什么标题显示不到标题栏上呢?

「已注销」 2016-08-10 09:58:30
我将标题部分使用了fragment定义,但是在模拟器运行的时候,发现我定义的标题没有在android的标题部分显示,模拟器运行效果如图:,应该怎么定义才能使标题部分的fragment放到标题栏上呢?
相关代码如下:
MainActitu.java:
[/size]public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
}
}
main_activity.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:showIn="@layout/activity_main"
tools:context="com.example.liwenchao.webuidemo.MainActivity">



<fragment
android:layout_width="fill_parent"
android:layout_height="45dp"
android:name="com.example.liwenchao.webuidemo.TitleFragment"
android:id="@+id/titleFragment"/>


<fragment
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:name="com.example.liwenchao.webuidemo.ContentFragment"
android:id="@+id/contentFragment"/>
</RelativeLayout>
TitleFragment.java:


public class TitleFragment extends Fragment {
private ImageButton imageButton;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.title_fragment,container,false);


imageButton= (ImageButton) view.findViewById(R.id.left);
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(),"第一个Fragment",Toast.LENGTH_SHORT).show();
}
});
return view;
}
}

title_fragment.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageButton
android:id="@+id/left"
android:layout_centerVertical="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"/>
<TextView
android:text="我不是微信"
android:textColor="#fff"
android:textSize="20sp"
android:textStyle="bold"
android:gravity="center"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
...全文
342 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tudouzi007 2016-08-10
  • 打赏
  • 举报
回复
你把main_activity布局换成垂直的线性布局 再试试 <LinearLayout ............ android:orientation="vertical"> ............ ............ </LinearLayout>
「已注销」 2016-08-10
  • 打赏
  • 举报
回复
引用 2 楼 tudouzi007 的回复:
你这个TitleFragment都没有放进MainActivity,你直接把MainActivity显示出来,那不就是两个空白的fragment布局了么。。。 把Fragment添加进Activity的方法: TitleFragment fragment = new TitleFragment(); //调用Fragment管理器,填充fragment FragmentManager fm = getFragmentManager(); //必须在事务的环境中操作fragment //事务 :一次可以执行多个操作,这些操作要么全部正确,只要有一个操作不成功,所有操作都不执行 FragmentTransaction ft = fm.beginTransaction();//开启一个fragment事务 ft.replace(R.id.titleFragmen, fragment);//在事务中执行对fragment的操作 ft.commit();//事务 把这段代码加进去oncreate里 试试看
我刚才试了,不行。。还是那样的
「已注销」 2016-08-10
  • 打赏
  • 举报
回复
引用 7 楼 a81658804 的回复:
你最上面那个蓝的是toolbar吧。。
不要自己写titlefragment啊,没有意义啊,直接用原生态的toolbar不行吗,有什么想不开的要自己写一个,还是你有什么效果是toolbar实现不了的?

是的,但是实现了之后,首先换了个样式,原先activity中的主题为@style/AppTheme,结果报This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.百度说是action bar要覆盖,结果换成@style/AppTheme.NoActionBar,但是启动时会继续报上面的错,但是不影响使用,mainactivity中写入了如下代码:
tudouzi007 2016-08-10
  • 打赏
  • 举报
回复
你这个TitleFragment都没有放进MainActivity,你直接把MainActivity显示出来,那不就是两个空白的fragment布局了么。。。 把Fragment添加进Activity的方法: TitleFragment fragment = new TitleFragment(); //调用Fragment管理器,填充fragment FragmentManager fm = getFragmentManager(); //必须在事务的环境中操作fragment //事务 :一次可以执行多个操作,这些操作要么全部正确,只要有一个操作不成功,所有操作都不执行 FragmentTransaction ft = fm.beginTransaction();//开启一个fragment事务 ft.replace(R.id.titleFragmen, fragment);//在事务中执行对fragment的操作 ft.commit();//事务 把这段代码加进去oncreate里 试试看
「已注销」 2016-08-10
  • 打赏
  • 举报
回复
自己先顶了
a81658804 2016-08-10
  • 打赏
  • 举报
回复
你最上面那个蓝的是toolbar吧。。 不要自己写titlefragment啊,没有意义啊,直接用原生态的toolbar不行吗,有什么想不开的要自己写一个,还是你有什么效果是toolbar实现不了的?
  • 打赏
  • 举报
回复
表示为啥要这样弄
「已注销」 2016-08-10
  • 打赏
  • 举报
回复
引用 4 楼 tudouzi007 的回复:
你把main_activity布局换成垂直的线性布局 再试试 <LinearLayout ............ android:orientation="vertical"> ............ ............ </LinearLayout>
不行,跟版本有关吗??

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧