【问题标题】:How to set gravity for the overlayed layer when two layers are overlayed?两层叠加时如何设置叠加层的重力?
【发布时间】:2015-06-17 14:20:33
【问题描述】:
 LayoutInflater mInflater = LayoutInflater.from(getApplicationContext());
 View overView = mInflater.inflate(R.layout.settings, null); 
 addContentView(overView,new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));

上面显示的是我在另一个视图上覆盖视图的代码。 但我的叠加布局出现在左侧。但我在我的xml. 中设置了android:layout_gravity="right"

我尝试添加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>

当我检查我的图形布局选项卡时。这个布局如我所料。只有在我运行项目之后。它仍然在左侧。

【问题讨论】:

  • View 类没有可以直接使用的名为gravity 的变量。
  • 那么我可以做些什么来设置我需要的重力?还有其他建议吗?
  • FrameLayout.LayoutParams layoutParams_webview = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); layoutParams_webview.gravity= Gravity.CENTER_VERTICAL |Gravity.CENTER_HORIZONTAL;并将其应用于所需元素将给出中心但它会向左移动。

标签: android layout layout-gravity


【解决方案1】:

实际上 View 对象没有 setGravity,因此将 View 对象设置为任何类型,例如 TextView 或按钮或 LinearLayout,我建议您这样做

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

【讨论】:

  • 我试过这个。现在没有错误,但运行后它仍然存在于之前的位置,而不是我设置的位置
  • 我认为最好使用 xml 文件本身的“android:layout_gravity=...”来更改所需布局的重力
  • 你能把你想要改变其重力的布局“设置”发布出来
  • @Amr 我的代码现在有问题。看看吧。
【解决方案2】:

我认为,在这种情况下,您需要修改布局中包含的视图的边距,这应该会使您的主布局膨胀。据我所知,最好将您的视图包装在 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>

【讨论】:

    【解决方案3】:

    用线性布局包裹视图有帮助。引用此链接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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多