0

我正在为视频门电话开发我的第一个 android 应用程序。SIP 音频和 mjpeg 视频功能正在工作我想在视频 ui 的底部添加三个按钮,但我在第三个添加的只有一个按钮。提前感谢您的任何回复

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    String URL = "http://172.16.1.58/mjpg/video.mjpg";
    //String URL ="http://172.16.20.20/axis-cgi/mjpg/video.cgi?camera=1&resolution=320x240";

    getWindow().requestFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

    mv = new MjpegView(this);
    setContentView(mv);

    // (1) add accept button on video screen
    acceptBtn = new ImageButton(this);
    acceptBtn.setImageResource(R.drawable.answer);
    acceptBtn.layout(0, 0, 0, 0);
    addContentView(acceptBtn, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    acceptBtn.setOnClickListener(onAccept);

    // (2) add End key on video screen
    endBtn = new ImageButton(this);
    endBtn.setImageResource(R.drawable.end);
    endBtn.layout(0, 300, 0, 0);
    addContentView(endBtn, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    endBtn.setOnClickListener(onEnd);


    // (3) add OpenDoor key on video screen 
    keyBtn = new ImageButton(this);
    keyBtn.setImageResource(R.drawable.key);
    keyBtn.layout(0, 600, 0, 0);
    addContentView(keyBtn, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    endBtn.setOnClickListener(onOpenDoor);


    new ConnectToImageServer().execute(URL);
}
4

1 回答 1

0

看起来您从未将按钮添加到视图中,您需要执行类似的操作

mv.addView(keyBtn);对于他们每个人。

但是,添加 3 个按钮可能不会为您提供所需的布局,因此您可以做一个包含所有按钮的 xml 布局并将其添加到您的视图中。使用类似的东西,或以编程方式

    XmlPullParser parser = res.getXml(R.layout.buttonsForVidUI);
    AttributeSet attributes = null;
    int state = 0;
    while(state != XmlPullParser.END_DOCUMENT)
    {
        try {
            state = parser.next();
        } catch (XmlPullParserException e1) {
            e1.printStackTrace();
        } catch (IOException e1) {
            e1.printStackTrace();
        }       
        if (state == XmlPullParser.START_TAG) {
            if (parser.getName().equals("LinearLayout")) {
               attributes = Xml.asAttributeSet(parser);
                break;
            }
        }
    } 

也就是说,如果我理解正确,可能发生的情况是所有按钮都相互重叠,所以你看到的只是最后一个。按钮的布局是否符合您的期望?检查这一点的一种方法是将其中一个的背景设置为黑色keyBtn.setBackgroundColor(#000000),并让其余的透明endBtn.setBackgroundColor(#00000000),最后两个 0 是 alpha 通道。我之前在向视图中添加按钮时遇到了麻烦,因为我试图将它们添加到的视图忽略了一些布局参数。在这种情况下,我必须将它们全部添加到布局的 xml 中,这是一个选项吗?

于 2013-09-02T08:57:37.073 回答