修复Viewpager的Android浏览 [英] Fix Viewpager Android Views
问题描述
我有一个标签式的Android应用程序viewpager看到正在运行的应用程序的图像截图
http://i.stack.imgur.com/zhlKF.png
问题是,我看到的空白页,而不是我的XML布局片段类参考,
什么是写XML文件的正确方法由Viewpager支持
下面是XML布局code
first1.xml
<的RelativeLayout的xmlns:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools
机器人:layout_width =match_parent
机器人:layout_height =match_parent>
<的TextView
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT
机器人:layout_centerHorizontal =真
机器人:layout_centerVertical =真
机器人:文字=HOLA MUNDO/>< / RelativeLayout的>
Frag1.java
包com.example.aliencomputing.kakamila;进口android.os.Bundle;
进口android.support.v4.app.Fragment;
进口android.view.LayoutInflater;
进口android.view.View;
进口android.view.ViewGroup;公共类Frag1扩展片段{
@覆盖
公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,捆绑savedInstanceState){
查看查看= inflater.inflate(R.layout.first1,集装箱,FALSE);
返回视图。
}
}
Frag2.java
包com.example.aliencomputing.kakamila;进口android.os.Bundle;
进口android.support.v4.app.Fragment;
进口android.view.LayoutInflater;
进口android.view.View;
进口android.view.ViewGroup;公共类Frag2扩展片段{
@覆盖
公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,捆绑savedInstanceState){
查看查看= inflater.inflate(R.layout.first2,集装箱,FALSE);
返回视图。
}
}
Frag3.java
包com.example.aliencomputing.kakamila;进口android.os.Bundle;
进口android.support.v4.app.Fragment;
进口android.view.LayoutInflater;
进口android.view.View;
进口android.view.ViewGroup;公共类Frag3扩展片段{
@覆盖
公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,捆绑savedInstanceState){
查看查看= inflater.inflate(R.layout.first3,集装箱,FALSE);
返回视图。
}
}
下面是主要活动code
MainActivity.java
包com.example.aliencomputing.kakamila;进口android.support.v4.app.FragmentActivity;
进口android.support.v4.view.ViewPager;
进口android.os.Bundle;公共类MainActivity扩展FragmentActivity { @覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main); ViewPager viewPager =(ViewPager)findViewById(R.id.pager); viewPager.setAdapter(新ViewPagerAdapter(getSupportFragmentManager())); }}
和ViewPagerAdapter.java
包com.example.aliencomputing.kakamila;进口android.content.Context;
进口android.support.v4.app.Fragment;
进口android.support.v4.app.FragmentManager;
进口android.support.v4.app.FragmentPagerAdapter;
公共类ViewPagerAdapter扩展FragmentPagerAdapter { 最终诠释PAGE_COUNT = 3;
//选项卡标题
私人字符串tabtitles [] =新的String [] {TAB1,TAB2,TAB3};
上下文语境; 公共ViewPagerAdapter(FragmentManager FM){
超(FM);
} @覆盖
公众诠释的getCount(){
返回PAGE_COUNT;
} @覆盖
公共片段的getItem(INT位置){
开关(位置){
情况下0:
Frag1 frag1 =新Frag1();
返回frag1;
情况1:
Frag2 frag2 =新Frag2();
返回frag2; 案例2:
Frag3 frag3 =新Frag3();
返回frag3;
}
返回null;
} @覆盖
公共CharSequence的getPageTitle(INT位置){
返回tabtitles [位置]
}
}
:您所需要的viewpager以外的ViewGroup中,你需要做的pagertabstrip包裹内容的高度。
您发布了Java code相貌端正给我。
I have Android application with a tabbed viewpager see the image screenshot of the running app
http://i.stack.imgur.com/zhlKF.png
The problem is that i see blank pages instead my xml layout referenced with fragment classes, What is the correct way to write the XML file to be supported by the Viewpager Here is the XML Layout code first1.xml
<RelativeLayout 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">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="HOLA MUNDO"/>
</RelativeLayout>
Frag1.java
package com.example.aliencomputing.kakamila;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class Frag1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.first1, container, false);
return view;
}
}
Frag2.java
package com.example.aliencomputing.kakamila;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class Frag2 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.first2, container, false);
return view;
}
}
Frag3.java
package com.example.aliencomputing.kakamila;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class Frag3 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.first3, container, false);
return view;
}
}
Here is the Main Activity code MainActivity.java
package com.example.aliencomputing.kakamila;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.os.Bundle;
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
viewPager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager()));
}
}
And ViewPagerAdapter.java
package com.example.aliencomputing.kakamila;
import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
public class ViewPagerAdapter extends FragmentPagerAdapter {
final int PAGE_COUNT = 3;
//TAB TITLES
private String tabtitles[]=new String[] {"Tab1", "Tab2", "Tab3"};
Context context;
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return PAGE_COUNT;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
Frag1 frag1 = new Frag1();
return frag1;
case 1:
Frag2 frag2 = new Frag2();
return frag2;
case 2:
Frag3 frag3 = new Frag3();
return frag3;
}
return null;
}
@Override
public CharSequence getPageTitle(int position) {
return tabtitles[position];
}
}
from the activity_main you posted: you need a viewgroup outside of the viewpager, and you need to make the height of pagertabstrip wrap content.
the java code you posted looks correct to me.
这篇关于修复Viewpager的Android浏览的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!