当两个图层重叠时,如何设置重叠图层的重力?

时间:2014-05-27 09:20:06

标签: android layout layout-gravity

 LayoutInflater mInflater = LayoutInflater.from(getApplicationContext());
 View overView = mInflater.inflate(R.layout.settings, null); 
 addContentView(overView,new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));

上面显示的是我在另一个视图上覆盖视图的代码。 但我的叠加布局显示在左侧。但我已在android:layout_gravity="right"

中设置了xml.

我尝试添加overView.gravity =Gravity.RIGHT。此处Gravityimported,但它为gravity提供了错误。 Error: gravity cannot be resolved or it is not a valid field。这就是所显示的。解释为什么会发生这种情况。我是否必须写一个字段调用引力?

更新:根据用户Amr的要求

以下代码是为我的settings.xml编写的

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 
    android:layout_width="200sp"
    android:layout_height="wrap_content"
    android:orientation="vertical" 
    android:layout_gravity="right"
    android:gravity="right"

 xmlns:android="http://schemas.android.com/apk/res/android">

        <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:background="#138DD4">

        <Button
            android:id="@+id/back"
            android:layout_width="60dp"
            android:layout_height="40dp"
            android:background="#12A5F4"
            android:drawableLeft="@drawable/icon"/>

        <TextView
            android:id="@+id/title_settings"
            android:layout_width="wrap_content"
            android:layout_height="30dp"
            android:background="#138DD4"
            android:textSize="20sp"
            android:text="@string/title_settings"
            android:textColor="@android:color/white"
            android:gravity="center"/>

        </LinearLayout>


    <ScrollView 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
             >
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:gravity="center"

            >



        <Button
            android:id="@+id/acc_settings"
            android:layout_width="200sp"
            android:text="@string/title_account"
            android:background="@drawable/button_border"
            android:textSize="15sp"
            android:layout_height="40sp"
            android:layout_gravity="center"
            android:gravity="center"
         />



        <Button
            android:id="@+id/profile_settings"
            android:layout_width="fill_parent"
            android:layout_height="40sp"
            android:text="@string/title_profile"
            android:background="@drawable/button_border"
            android:textSize="15sp"
            android:layout_gravity="center"
         />


        <Button
            android:id="@+id/parent_settings"
            android:layout_width="fill_parent"
            android:layout_height="40sp"
            android:text="@string/title_parent_details"
            android:background="@drawable/button_border"
            android:textSize="15sp"
            android:layout_gravity="center"
         />



        <Button
            android:id="@+id/help_info"
            android:layout_width="fill_parent"
            android:layout_height="40sp"
            android:text="@string/title_help"
            android:background="@drawable/button_border"
            android:textSize="15sp"

            android:layout_gravity="center" 

         />

        <Button
            android:id="@+id/about_info"
            android:layout_width="fill_parent"
            android:layout_height="40sp"
            android:text="@string/title_about"
            android:background="@drawable/button_border"
            android:textSize="15sp"
            android:layout_gravity="center" 
         />



        <Button
            android:id="@+id/logout"
            android:layout_width="fill_parent"
            android:text="@string/logout"
            android:background="@drawable/button_border"
            android:textSize="15sp"
            android:layout_height="40sp"
            android:layout_gravity="center"

          />



        </LinearLayout>
        </ScrollView>

  </LinearLayout>

当我查看我的图形布局选项卡时。这个布局按照我的预期显示。我运行项目后才有的事情。它仍在左侧。

3 个答案:

答案 0 :(得分:0)

实际上View对象dos没有setGravity,所以只要将View对象用于TextView或者按钮或LinearLayout,我建议你做类似的事情

LinearLayout overView = (LinearLayout) mInflater.inflate(R.layout.settings, null);
overView.setGravity(Gravity.RIGHT);

答案 1 :(得分:0)

我认为,在这种情况下,你需要修改布局中包含的应该扩大主要布局的视图的边距。据我所知,最好将视图包装在relativelayout中。请看下面发布的示例,它应该可以正常工作

Activity_Code:

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

    LayoutInflater li = LayoutInflater.from(getApplicationContext());
    View v = li.inflate(R.layout.inflater, null);
    addContentView(v, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
}

main.xml中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context="com.example.layoutinflatertest00.LayoutInflaterTest00"
tools:ignore="MergeRootFrame"
android:orientation="vertical" />

inflater.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="200sp"
    android:layout_height="wrap_content"
    android:orientation="vertical" 
    android:layout_gravity="right"
    android:gravity="right|center_vertical">

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:background="#138DD4"
        android:layout_gravity="right|center_vertical">
        <Button
            android:id="@+id/back"
            android:layout_width="60dp"
            android:layout_height="40dp"
            android:layout_marginLeft="100dp"
            android:text="button"/>
       <TextView
            android:id="@+id/title_settings"
            android:layout_width="wrap_content"
            android:layout_height="30dp"
            android:background="#138DD4"
            android:textSize="20sp"
            android:text="text text text"
            android:textColor="@android:color/white"
            android:gravity="center"
            android:layout_toRightOf="@+id/back"/>
       </RelativeLayout>

答案 2 :(得分:0)

使用linearlayout包装视图会有所帮助。提到此链接setting gravity for inflated layout

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/playoverlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:background="@android:color/transparent"
android:padding="10dp">


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">

    <WebView
        android:id="@+id/webView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:background="@android:color/transparent"
        android:gravity="center"
        android:scrollbars="none" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"></Button>
</LinearLayout>


</RelativeLayout>