如何将视图水平放置在水平线性布局中心

时间:2016-12-06 20:28:33

标签: android

我有一个水平线性布局,里面有3个项目。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <ImageButton
        android:id="@+id/FirstItem"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:src="@drawable/ic_microphone" />

    <EditText
        android:id="@+id/secondItem"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1" />

    <ImageButton
        android:id="@+id/ThirdItem"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_weight="0"/>

</LinearLayout>

在代码中,我有时会隐藏第二个和第三个项目。我希望当其他两个被隐藏时,我的第一个项目会显示在中间。

我该怎么办?目前,当我隐藏第二和第三项时,第一项仍然留在左侧。我可以在第一个项目上设置layout_weight = 1,但是当2和3是可见的时它没有正确显示。

2 个答案:

答案 0 :(得分:1)

在xml中使用android:gravityandroid:layout_gravity

android:gravity设置了内容的严重性。

android:layout_gravity在其父级中设置布局的重力。

修改

在您的代码中使用android:gravity="center"它将起作用。

答案 1 :(得分:1)

var stropsrc = new Array(3);
stropsrc[0]= "../rs/MOVIE/KlogoPk.mp4";
stropsrc[1]="../rs/MOVIE/theme.mp4";
stropsrc[2]= "../rs/MOVIE/OpPk.mp4";

function doPlaySequence()
{
  var divcontainer = document.createElement("div");
  divcontainer.setAttribute("id","divop");
  document.body.appendChild(divcontainer);

  var playID = "op0";

  var opplay = document.createElement('video');
  opplay.setAttribute("id",playID);
  opplay.preload = "none";


  divcontainer.appendChild(opplay);

  opplay.src = stropsrc[0];


  var AttrObj = {"datacount":0};
  var myPlayer;
  videojs.setAttributes(opplay,AttrObj);


  myPlayer = videojs(opplay);
  myPlayer.play();


  opplay.addEventListener("ended",function(e)
  {
    e.preventDefault();

    var c = parseInt(this.getAttribute("datacount"))+1;
    if(c < 3)
    {
      opplay.src = stropsrc[c];
      AttrObj.datacount = c;
      videojs.setAttributes(opplay,AttrObj);

      myPlayer = videojs(opplay);
      myPlayer.play();

    }
    else//end
    {

      /*reset*/
      opplay.src = stropsrc[0];
      AttrObj.datacount = 0;
      videojs.setAttributes(opplay,AttrObj);


      /*hide*/
      var divContainer = document.getElementById("divop");

      divContainer.style.display = "none";
      divContainer.style.visibility = "hidden";

      var divOP = document.getElementById("op0");
      divOP.style.display = "none";
      divOP.style.visibility = "hidden";
    }
  });