Android TextView无法设置BackBackground Color或Drawable

时间:2014-05-07 09:53:45

标签: android textview setbackground

想知道以前是否有人遇到过这个问题。我有一个应用程序可以检测面部并在面部周围放置可触摸的方块,所有这些都在RelativeLayout中。触摸时我想在View中添加一些文本,这些文本都运行得很好,但是当我简单地向TextView添加背景时,它什么也没做。我尝试过标准背景setBackgroundColor(Color.WHITE);而不是我真正想要使用的背景(setBackgroundResource(R.drawable.nametag);),但仍然没有。

TextView nameLabelView = new TextView(activity);
nameLabelView.setText(fullname);
nameLabelView.setTextColor(Color.BLACK);
nameLabelView.setBackgroundColor(Color.WHITE);                 //TODO <-- wth??
//nameLabelView.setBackgroundResource(R.drawable.nametag);
nameLabelView.setGravity(Gravity.CENTER_HORIZONTAL);

//duplicate layout params from active face View so label sits inside it
ViewGroup.LayoutParams lp = selectedFaceView.getLayoutParams();
nameLabelView.setLayoutParams(lp);
facePreviewLayout.addView(nameLabelView);

奇怪的是,希望对那些人来说很明显,提前谢谢!

2 个答案:

答案 0 :(得分:1)

我已经测试了你的代码,它对我来说没问题。有必要提供更多信息,以便我可以提供更多帮助。下面的代码工作正常。

<强> MainActivity.java

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView nameLabelView = new TextView(getApplicationContext());
        nameLabelView.setText("Test");
        nameLabelView.setTextColor(Color.WHITE);
        nameLabelView.setBackgroundColor(Color.BLACK);                 //TODO <-- wth??
        //nameLabelView.setBackgroundResource(R.drawable.nametag);
        nameLabelView.setGravity(Gravity.CENTER_HORIZONTAL);

        //duplicate layout params from active face View so label sits inside it
        FrameLayout selectedFaceView = (FrameLayout)findViewById(R.id.frame_layout);
        ViewGroup.LayoutParams lp = selectedFaceView.getLayoutParams();
        nameLabelView.setLayoutParams(lp);
        RelativeLayout facePreviewLayout = (RelativeLayout)findViewById(R.id.relative_layout);
        facePreviewLayout.addView(nameLabelView);

    }

}

<强> activity_main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/relative_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <FrameLayout
        android:id="@+id/frame_layout"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:background="#00FF00" >
    </FrameLayout>

</RelativeLayout>

答案 1 :(得分:0)

感谢janzoner您的测试真的很感激,很高兴知道我没有发疯。我已经找到了解决问题的方法,我不知道为什么这种方法有效,而且我以前的设置也没有,也许我已经盯着它看了太长时间并错过了某个地方的某些东西其他。

基本上事先我将名称标签TextView添加到主RelativeLayout(其子项是实际图像和所有面部Views等)。

现在我已经将名称标签TextView移动到了自己的RelativeLayout,它围绕在脸上,并且神奇地完成了这个伎俩。这是一种更干净的做事方式,因为你可以遍历Views Views的孩子RelativeLayout,但你可以{{1}}的孩子,我需要这个后来!

呼!