我遵循了如何使用此site中的Action Bar
在Android中使用Fragment
创建标签。虽然选项卡结果很好,但TextView
中间出现的Fragment
无处可见。我查看了与此相关的其他StackOverflow问题,但没有解决我的问题。
FragmentTab1.java:
public class FragmentTab1 extends Fragment {
final String TAG = "FRAGMENT_TAB_1";
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.tab, container, false);
TextView textview = (TextView) view.findViewById(R.id.txtvwTab);
textview.setText("one");
Log.i(TAG, "textview's text: " + textview.getText());
return view;
}
}
最奇怪的是,虽然TextView
不可见,但当我查看LogCat
时,它仍然会显示“ textview的文字:一个”。显然,TextView
仍在创建中。根本没有错误消息。
tab.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"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/txtvwTab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" //added later
android:textColor="@color/Black" //added later
android:textSize="40sp" //added later
android:alpha="1" //added later
android:text="DEFAULT" //added later
/>
</RelativeLayout>
在原始代码中,我看不到显示“ one ”,因此我尝试编辑XML
文件。我试着改变它显示的位置。我尝试指定它的颜色,文本大小,alpha,甚至是默认文本。什么都没有用!
那么我还缺少什么?为什么TextView
明确存在并且在实际上不可见的情况下获取其文本?
编辑(更多代码):
Main.java:
public class Main extends Activity {
ActionBar.Tab tab1, tab2, tab3;
Fragment fragmentTab1 = new FragmentTab1();
Fragment fragmentTab2 = new FragmentTab2();
Fragment fragmentTab3 = new FragmentTab3();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Remove status bar
View decorView = getWindow().getDecorView();
// Hide the status bar.
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
setContentView(R.layout.activity_main);
ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
tab1 = actionBar.newTab().setText("1");
tab2 = actionBar.newTab().setText("2");
tab3 = actionBar.newTab().setText("3");
tab1.setTabListener(new TabListener(fragmentTab1));
tab2.setTabListener(new TabListener(fragmentTab2));
tab3.setTabListener(new TabListener(fragmentTab3));
actionBar.addTab(tab1);
actionBar.addTab(tab2);
actionBar.addTab(tab3);
}
activity_main.xml中:
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.novoloc.upup2.Main" />
TabListener.java:
public class TabListener implements ActionBar.TabListener {
Fragment fragment;
public TabListener(Fragment fragment) {
this.fragment = fragment;
}
public void onTabSelected(Tab tab, FragmentTransaction ft) {
ft.replace(R.id.fragment_container, fragment);
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
ft.remove(fragment);
}
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// nothing done here
}
}
答案 0 :(得分:2)
我正面临类似的问题。但我已经发现textview存在,但它隐藏在扩展的工具栏/操作栏下(因为它包含了tablayout)。给你的textview一个100dp或200dp的边缘,并给它一个背景颜色,你将能够看到它在那里,但隐藏在actionBar下。或者你甚至可以通过向上滑动ActionBar来显示你的文本视图。
请参阅下面的问题,了解如何解决此问题: Fragment from View Pager hiding behind Tab Bar
答案 1 :(得分:0)
由于对此感到头疼,终于找到了一个简单的解决方案。将您的 ViewPager 高度设置为绝对值,而不是android:layout_height="match_parent"
或android:layout_height="wrap_content"
尝试
android:layout_height="300dp
或一些首选值。