【问题标题】:TextView not visible in Fragment?TextView 在片段中不可见?
【发布时间】:2014-10-25 03:58:05
【问题描述】:

我从这个site 开始关注如何在Android 中使用Fragments 在Action Bar 中创建选项卡。虽然选项卡结果很好,但应该出现在Fragments 中间的TextView 却无处可寻。我查看了与此相关的其他 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
    }
}

【问题讨论】:

  • 嘿小试一试,而不是RelativeLayout 试试LinearLayout 并将orientation 设置为vertical 并查看结果:-/
  • 也不走运。 :(
  • 一定是高度和/或宽度的问题。为相对布局设置背景色,然后为 textview 设置对比色并查看它们是否被绘制。也可以尝试在dp 中设置一个固定的高度和宽度并查看
  • 我尝试让宽度 = 300dp 和高度 = 150 dp。我还明确地将 RelativeLayout 设为白色。仍然没有运气。 :(
  • @color/Black 的值是多少?我想知道这个映射到的颜色是否与您的背景颜色相同?

标签: android android-fragments textview


【解决方案1】:

我面临着类似的问题。但我发现 textview 在那里,但它隐藏在扩展的工具栏/操作栏下(因为其中包含 tablayout)。给你的 textview 一个 100dp 或 200dp 的 margintop 并给它一个背景颜色,你将能够看到它在那里,但隐藏在 actionBar 下。或者你甚至可以通过向上滑动来收缩 ActionBar 以显示你的 textview。

请参阅以下问题以了解如何解决此问题: Fragment from View Pager hiding behind Tab Bar

【讨论】:

    【解决方案2】:

    一直为此头疼,终于找到了一个简单的解决方案。将您的 ViewPager 高度设置为绝对值,而不是 android:layout_height="match_parent"android:layout_height="wrap_content"

    试试android:layout_height="300dp 或一些首选值。

    【讨论】:

      猜你喜欢
      • 2018-09-03
      • 2018-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-06
      • 1970-01-01
      • 2019-04-21
      • 1970-01-01
      相关资源
      最近更新 更多