请问各位大神,这种布局是不是用Fragment来做的?

梅明子 2015-01-13 09:41:37
就是多米音乐里的一些二级列表。请看图:
这是一级列表(文件夹)


然后点击文件夹就会进入二级列表(就是具体的歌曲列表),它这里会把标题和内容、菜单都变成二级列表了,除了最底下的播放按钮那写不变。

这是进入二级列表的效果:



然后在这里点击返回到一级目录,会有个动画效果,把二级列表向右滑走(弹出栈)



请大神教教我怎么实现这样的。我现在写好能跳到二级列表,但是发现一级列表的项还能点击,我是用Fragment来写的,还有就是返回也返回不了,现在。
...全文
145 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
梅明子 2015-01-13
  • 打赏
  • 举报
回复
引用 5 楼 birdsaction 的回复:

FragmentTransaction t = this.fragmentManager.beginTransaction();
t.replace(R.id.container, fragment);
t.addToBackStack(null); //这个要加上,才能点击back按钮回到上一个UI界面Fragment
t.commit();
晕死,果然是这个,加上就好了,为什么啊?能解释下么?太谢谢你了!
梅明子 2015-01-13
  • 打赏
  • 举报
回复
引用 3 楼 birdsaction 的回复:
你在2级页面上面把 事件覆盖掉 后面就点不到了。或者把一级的INVISIBLE
这是我的Activity类,就是点击listview item就进入二级列表

package com.qiulong.myfragmenttest;

import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends FragmentActivity implements OnItemClickListener{

	private View view;
	private ListView listview;
	private List<String> list;
	
	private FragmentTransaction transion;
	private FragmentItemInfo info;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);  
		setContentView(R.layout.activity_main);
		
		view = (View)findViewById(R.id.activity_lin_title);
		listview = (ListView)view.findViewById(R.id.activity_listview);
		listview.setAdapter(new MyAdapter(getData()));
		listview.setOnItemClickListener(this);
	}

	@Override
	public void onItemClick(AdapterView<?> parent, View view, int position,long id) {
		String str = list.get(position);

		transion = this.getSupportFragmentManager().beginTransaction();
		info = new FragmentItemInfo(str);
		transion.add(R.id.activity_lin_title, info);
		//transion.replace(R.id.activity_lin_title, info);
		transion.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);//设置动画效果
		transion.commit();
	}
	
	
	private List<String> getData(){
		list = new ArrayList<String>();
		list.add("曲目1");
		list.add("曲目2");
		list.add("曲目3");
		list.add("曲目4");
		list.add("曲目5");
		list.add("曲目6");
		list.add("曲目7");
		list.add("曲目8");
		list.add("曲目9");
		list.add("曲目10");
		list.add("曲目11");
		list.add("曲目12");
		return list;
	}
	
	
	class MyAdapter extends BaseAdapter{
		
		List<String> list;
		
		public MyAdapter(List<String> list) {
			super();
			this.list = list;
		}

		@Override
		public int getCount() {
			return list.size();
		}

		@Override
		public Object getItem(int position) {
			return list.get(position);
		}

		@Override
		public long getItemId(int position) {
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			TextView text = new TextView(MainActivity.this);
			text.setText(list.get(position));
			text.setTextSize(18);
			text.setPadding(20, 10, 0, 20);
			return text;
		}
	}




}

下面是我的布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <fragment
        android:id="@+id/activity_lin_title"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@+id/activity_lin_down"
        android:name="com.qiulong.myfragmenttest.FragmentTitleCotent"/>

    <fragment
        android:id="@+id/activity_lin_down"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:name="com.qiulong.myfragmenttest.FragmentDownMenu"
        android:layout_alignParentBottom="true"/>

</RelativeLayout>
Birds2018 2015-01-13
  • 打赏
  • 举报
回复

FragmentTransaction t = this.fragmentManager.beginTransaction();
t.replace(R.id.container, fragment);
t.addToBackStack(null); //这个要加上,才能点击back按钮回到上一个UI界面Fragment
t.commit();
梅明子 2015-01-13
  • 打赏
  • 举报
回复
引用 3 楼 birdsaction 的回复:
你在2级页面上面把 事件覆盖掉 后面就点不到了。或者把一级的INVISIBLE
恩,这个焦点的暂时解决了,我在二级的根布局下加上android:clickable="true"就好了。现在就是返回不能返回到一级列表,点击没反应。 我在二级列表里面写的返回,你看我的代码:

package com.qiulong.myfragmenttest;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.TextView;

@SuppressLint("ValidFragment")
public class FragmentItemInfo extends Fragment {
	
	private String value;
	
	public FragmentItemInfo(String value) {
		super();
		this.value = value;
	}
	
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		View view = inflater.inflate(R.layout.activity_item_info, container, false); 
		TextView text = (TextView)view.findViewById(R.id.text);
		text.setText(value);
		
		view.findViewById(R.id.info_return).setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				getFragmentManager().popBackStack();
				Log.e("===>", "点击");
			}
		});
		return view;
	}
}
Birds2018 2015-01-13
  • 打赏
  • 举报
回复
你在2级页面上面把 事件覆盖掉 后面就点不到了。或者把一级的INVISIBLE
梅明子 2015-01-13
  • 打赏
  • 举报
回复
引用 1 楼 birdsaction 的回复:
ViewPager + Fragment + Slid menu 即可 这些都是基本的东西 网上有很多例子
我是用了Fragment,但是还能获取到一级的焦点,而且返回也不行
Birds2018 2015-01-13
  • 打赏
  • 举报
回复
ViewPager + Fragment + Slid menu 即可 这些都是基本的东西 网上有很多例子

80,349

社区成员

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

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