<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/container_app_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<include
android:id="@+id/app_bar"
layout="@layout/app_bar" />
</LinearLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
.......
</ScrollView>
<fragment
android:id="@+id/fragment_navigation_drawer"
android:layout_width="@dimen/nav_drawer_width"
android:layout_marginTop="63dp"
android:layout_height="match_parent"
android:layout_gravity="start"
app:layout="@layout/fragment_navigation_drawer"
tools:layout="@layout/fragment_navigation_drawer" />
这是我的xml文件。我想在java文件中设置片段的宽度。像这样
int width = getResources().getDisplayMetrics().widthPixels/2;
DrawerLayout.LayoutParams params = (android.support.v4.widget.DrawerLayout.LayoutParams) drawerFragment.getView().getLayoutParams();
params.width = width;
drawerFragment.getView().setLayoutParams(params);
但为此,我需要删除
来自xml文件中的片段的 android:layout_width =“@ dimen / nav_drawer_width”。
但是当我删除时,我得到编译时错误。
我正在研究android studio。
如何解决这个问题。任何人都可以帮助我。
答案 0 :(得分:1)
您无法从XML中删除宽度和高度属性。
但您可以将其设置为0,而不是:$returnValue = preg_split('/(?<=\\d)_(?=[A-Z0-9]{2})|(?<=[A-Z0-9]{2})_(?=\\d)/', '1_AB_CD_2_ABC_3_ABD', -1, PREG_SPLIT_NO_EMPTY);
我认为这是实现这一目标的唯一方法。
答案 1 :(得分:1)
确实在最后一条注释中,每次在xml文件中创建视图时,高度和宽度都是必需参数。因此,设置一个通用值,之后,您将以编程方式修改该值。
顺便说一句,我不确定你是否可以使用&#34; DrawerLayout.LayoutParams&#34;作为修改该片段的高度或宽度的参数。在你的情况下,我将使用这个代码肯定会起作用:
int width = getResources().getDisplayMetrics().widthPixels/2;
mMapFragment = (SupportMapFragment) (getSupportFragmentManager()
.findFragmentById(R.id.fragment_navigation_drawer));
ViewGroup.LayoutParams params = mMapFragment.getView().getLayoutParams();
params.width= width;
mMapFragment.getView().setLayoutParams(params);
另一个建议offtopic:我在你的xml中看到你使用的线性布局太多了。请记住,这会使您的应用速度变慢。你应该总是尝试使用更少的线性和相对嵌套会更好。举个例子,我说container_app_bar布局包含了app_bar吗?并且肯定在这个app_bar里面,父也是一个线性布局......也许你可以删除container_app_bar。我想你不需要它。 (这只是一个例子)。