想知道以前是否有人遇到过这个问题。我有一个应用程序可以检测面部并在面部周围放置可触摸的方块,所有这些都在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);
奇怪的是,希望对那些人来说很明显,提前谢谢!
答案 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}}的孩子,我需要这个后来!
呼!