从xml文件中删除layout_width参数会导致错误

时间:2015-05-04 07:21:20

标签: android android-studio

<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。 如何解决这个问题。任何人都可以帮助我。

2 个答案:

答案 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。我想你不需要它。 (这只是一个例子)。