android之Fragment使用

编程入门 行业动态 更新时间:2024-10-24 04:41:39

<a href=https://www.elefans.com/category/jswz/34/1771384.html style=android之Fragment使用"/>

android之Fragment使用

这个是上一篇的扩展,做的东西是一样的,只是效果不同

上一篇:android之左右滑动切换activity

个人感觉使用那么多activity好麻烦,所以使用Fragment实现,代码实现,代码简单了,就是少了左右滑动的效果,看个人喜好吧

看一下完成后的图片:



再看一下代码结构:只有两个acvitity,其实可以做到只有一个,万一有人不会按钮跳转呢,所以留着做欢迎界面

界面很丑,不要嫌弃,只是实现功能而已


MainAvtivity里就几句话:

findViewById(R.id.main_btn).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, TestActivity.class);startActivity(intent);}});
TestActivity需要extends FragmentActivity ,看一下代码:

package android.cl.uitest;import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.widget.RadioGroup;public class TestActivity extends FragmentActivity {private Fragment fragment;private RadioGroup myTabRg;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_test);initView();}public void initView(){fragment = new TestFragment();getSupportFragmentManager().beginTransaction().replace(R.id.main_content, fragment)mit();myTabRg = (RadioGroup) findViewById(R.id.tab_menu);myTabRg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {// TODO Auto-generated method stubswitch (checkedId) {case R.id.rb_test:fragment = new TestFragment();Log.i("MyFragment", "TestFragment");getSupportFragmentManager().beginTransaction().replace(R.id.main_content, fragment)mit();break;case R.id.rb_result:fragment = new ResultFragment();Log.i("MyFragment", "ResultFragment");getSupportFragmentManager().beginTransaction().replace(R.id.main_content, fragment)mit();break;case R.id.rb_message:fragment = new MessageFragment();Log.i("MyFragment", "MessageFragment");getSupportFragmentManager().beginTransaction().replace(R.id.main_content, fragment)mit();break;case R.id.rb_setting:fragment = new SettingFragment();Log.i("MyFragment", "SettingFragment");getSupportFragmentManager().beginTransaction().replace(R.id.main_content, fragment)mit();break;default:break;}}});}}
布局文件:activity_test.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=""android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><FrameLayoutandroid:id="@+id/main_content"android:layout_width="fill_parent"android:layout_height="0dp"android:layout_weight="0.78" /><RadioGroupandroid:id="@+id/tab_menu"android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:background="#C4C4C4"><RadioButtonandroid:id="@+id/rb_test"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_gravity="bottom"android:layout_weight="1"android:button="@null"android:gravity="center_horizontal|bottom"android:paddingTop="2dp"android:text="测试"android:textSize="30dp"android:checked="true"<span style="color:#ff0000;">  android:textColor="@drawable/tab_selector_tv_color"android:background="@drawable/tab_selector_checked_bg"</span>/><RadioButtonandroid:id="@+id/rb_result"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_gravity="bottom"android:layout_weight="1"android:button="@null"android:gravity="center_horizontal|bottom"android:paddingTop="2dp"android:text="结果"android:textSize="30dp"android:textColor="@drawable/tab_selector_tv_color"android:background="@drawable/tab_selector_checked_bg"/><RadioButtonandroid:id="@+id/rb_message"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_gravity="bottom"android:layout_weight="1"android:button="@null"android:gravity="center_horizontal|bottom"android:paddingTop="2dp"android:text="信息"android:textSize="30dp"android:textColor="@drawable/tab_selector_tv_color"android:background="@drawable/tab_selector_checked_bg"/><RadioButtonandroid:id="@+id/rb_setting"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_gravity="bottom"android:layout_weight="1"android:button="@null"android:gravity="center_horizontal|bottom"android:paddingTop="2dp"android:text="配置"android:textSize="30dp"android:textColor="@drawable/tab_selector_tv_color"android:background="@drawable/tab_selector_checked_bg"/></RadioGroup></LinearLayout>

上面标红的地方是用了选择器,在切换界面时改变按钮的背景和字体颜色

tab_selector_checked_bg.xml:

<?xml version="1.0" encoding="utf-8"?>
<!--用于控制切换的时候显示button背景的颜色 ,使用 drawable  -->
<selector xmlns:android=""><item android:state_checked="true" android:drawable="@color/colorGrey"/>
</selector>
tab_selector_tv_color.xml:

<?xml version="1.0" encoding="utf-8"?>
<!--用于控制切换的时候显示下面字体的颜色-->
<selector xmlns:android=""><item android:state_checked="true" android:color="@android:color/black"/><item android:state_checked="false" android:color="@color/colorGrey"/>
</selector>

四个界面的布局文件基本都是一样的,贴出一个content_result.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android=""android:layout_width="match_parent"android:layout_height="match_parent"><ListViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/resultListView"android:layout_alignParentTop="true"android:layout_alignParentLeft="true"android:layout_alignParentStart="true"android:layout_above="@+id/button2" />
</LinearLayout>

ResultFragment需要 extends Fragment,这四个也都是差不多的,贴出其中一个

package android.cl.uitest;import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;import java.util.ArrayList;
import java.util.List;public class ResultFragment extends Fragment {public ResultFragment() {// Required empty public constructor}private ListView listView;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);}/*在 fragment 里面调用 findViewById1.是在 onCreateView 中2.是 view.findViewById 而不是 activity.findViewById** */@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {//我们设置一个List集合,然后向里边添加几条数据List<String> ls = new ArrayList<String>();ls.add("结果1");ls.add("结果2");ls.add("结果3");View view = inflater.inflate(R.layout.content_result, container, false);listView = (ListView)view.findViewById(R.id.resultListView);//获取xml文件中listView控件listView.findViewById(R.id.resultListView);//然后为listView控件调用setAdapter方法,让数据显示在界面上。listView.setAdapter(new ArrayAdapter<String>(getContext(), android.R.layout.simple_list_item_1, ls));listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {//通过单击事件,获得单击选项的内容String text = listView.getItemAtPosition(arg2) + "";//通过Toast对象显示出来。Toast.makeText(getContext(), text, Toast.LENGTH_SHORT).show();}});return view;}}


对了,还有一个最后的那个修改radiobutton的格式的,个人喜欢这种的,文字在左边,按钮在右边

<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android=""android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><RadioGroupandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_alignParentLeft="true"android:layout_alignParentStart="true"android:layout_above="@+id/button2"android:weightSum="1"><!--第一步:android:button="@null"这条语句将原来系统的RadioButton图标给隐藏起来。第二步:android:drawableRight="@android:drawable/btn_radio"这条语句在原来图标的右边添加一个系统自带的btn_radio图标,我想RadioButton就是在btn_radio图标上进行封装而已。--><RadioButtonandroid:layout_width="120pt"android:layout_height="wrap_content"android:text="1080P"android:id="@+id/radioButton"android:button="@null"android:drawableRight="@android:drawable/btn_radio" /><RadioButtonandroid:layout_width="120pt"android:layout_height="wrap_content"android:text="720P"android:id="@+id/radioButton2"android:button="@null"android:drawableRight="@android:drawable/btn_radio"/></RadioGroup></LinearLayout>


OK,完成啦!









源码下载:

更多推荐

android之Fragment使用

本文发布于:2024-02-27 05:55:19,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1705433.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:android   Fragment

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!