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
。此处Gravity
为imported
,但它为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>
当我查看我的图形布局选项卡时。这个布局按照我的预期显示。我运行项目后才有的事情。它仍在左侧。
答案 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>