在android中设置TextView的可见性不起作用

Posted

技术标签:

【中文标题】在android中设置TextView的可见性不起作用【英文标题】:Set visibility of TextView in android not working 【发布时间】:2011-12-16 13:19:42 【问题描述】:

当我尝试将视图设置为“GONE”时,我的程序遇到了运行时异常。 我处理它的代码:

setContentView(R.layout.list_main);
... 
 lv =  getListView();
             View header = (View) findViewById(R.id.header_layout_root);
             TextView tv = (TextView) header.findViewById(R.id.new_highscore);
            tv.setVisibility(View.GONE);

 lv = getListView();
        LayoutInflater inflater = getLayoutInflater();
        View header = inflater.inflate(R.layout.list_header, (ViewGroup) findViewById(R.id.header_layout_root));
        lv.addHeaderView(header, null, false);

mC = mDBHelper.getAllHighScores();
        startManagingCursor(mC);

        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.row, mC, 
                new String[]  DBAdapter.COL_NAME, DBAdapter.COL_SCORE , 
                new int[]  R.id.txtText1, R.id.txtText2 );
        lv.setAdapter(adapter);

xml:

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_
  android:layout_
  android:id="@+id/header_layout_root"
  android:background="#ffffff"
  android:orientation="vertical">
<TextView
    android:layout_
    android:layout_
    android:text="Pick Master High Scores"
    android:background="#000000"
    android:textColor="#ffffff"
    android:textSize="28dp"
    android:gravity="center_horizontal"
    android:paddingTop="10dp"
    android:paddingBottom="10dp">
</TextView>
<RelativeLayout
    android:layout_
    android:layout_
     android:id="@+id/header_layout_root1">
    <ImageView
        android:id="@+id/sample_image"
        android:layout_
        android:layout_
        android:adjustViewBounds="true"
        android:src="@drawable/pickmaster"
        android:scaleType="fitXY">
    </ImageView>
    <TextView
        android:id="@+id/new_highscore"
        android:text="New High Score added!"
        android:layout_
        android:layout_
        android:textColor="#ffffffff"
        android:textSize="12dp"
        android:background="#AA000000"
        android:padding="5dp"
        android:layout_alignParentLeft="true"
        android:layout_alignBottom="@id/sample_image">
    </TextView>
</RelativeLayout>

我认为,问题在于 new_highscore 不在 list_main 中,而是在另一个 xml 文件中。我使用了两个,因为我有一个带有标题和图像等的列表视图。

关于使视图“不可见”或“消失”的任何想法?

谢谢,

【问题讨论】:

如何使用带有 R.id.new_highscore 的 xml 文件? 【参考方案1】:

试试这个代码

   lv = getListView();
   LayoutInflater inflater = getLayoutInflater();
   View header = inflater.inflate(R.layout.list_header, (ViewGroup) findViewById(R.id.header_layout_root));
   lv.addHeaderView(header, null, false);
   View relativeLayout = header.findViewById(R.id.header_layout_root1);
   TextView highScore = relativeLayout.findViewById(R.id.new_highscore);
   highScore.setVisibility(View.GONE);

从顶部删除此代码

lv =  getListView();
View header = (View) findViewById(R.id.header_layout_root);
TextView tv = (TextView) header.findViewById(R.id.new_highscore);
tv.setVisibility(View.GONE);

如果这不起作用,请发布您遇到的异常。

【讨论】:

我试过了,没用...我更新了代码以显示我如何分配列表视图 谢谢贾斯汀,我已经更改了代码,并且似乎出现了一些其他错误。不是直接访问时(即查看高分按钮),而是当我添加分数时,将变量传递给新活动,然后显示高分。我收到这些错误,它是在 startAcvtvity 之后和随后的 onCreate 之前。 WARN/WindowManager(1377):以前的调度状态:KeyEventaction=1 code=4 repeat=0 meta=0 scancode=158 mFlags=8 to Window45004ae8 com.test. frequencyTest/com.test.frequencyTest.Menu paused=false @ 1319733312935 lw=Window45004ae8 com.test.frequencyTest/com.test.frequencyTest.Menu paused=false lb=android.os.BinderProxy@45004928 fin=false gfw =true ed=true tts=0 wf=false fp=false mcf=Window45004ae8 com.test.frequencyTest/com.test.frequencyTest.Menu paused=false 错误是我的错误,在清单中。你的解决方案节省了一天:) 如果我能进行两次投票,你今天就会得到它。非常感谢人!投票过一次。【参考方案2】:

你不能只有一个带有 textview 和 listview 的 xml 吗?那么它应该可以工作

【讨论】:

我想以实现方式使用 LayoutInflater

以上是关于在android中设置TextView的可见性不起作用的主要内容,如果未能解决你的问题,请参考以下文章

应用ellipsize时,获取textview中可见字符的数量

在代码中设置 textview 的边距和重力不起作用

[转]Android中设置TextView的颜色setTextColor

Android 设置与 TextView 的希伯来语文本?

安卓在代码中设置TextView的drawableLeftdrawableRightdrawableTopdrawableBottom

以编程方式在 TextView 中设置左可绘制对象