Как программно изменить высоту и ширину компоновки кадра? - PullRequest
6 голосов
/ 26 августа 2011

Я новичок в Android.

Я сталкиваюсь с одной проблемой: я добавляю макет фрейма в свое приложение, код:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <FrameLayout android:id="@+id/frameLayout1">
        <LinearLayout 
        android:layout_height="wrap_content" 
        android:id="@+id/linearLayout1" 
        android:layout_width="fill_parent">
        </LinearLayout>
    </FrameLayout>
</LinearLayout>

Моя проблема в том, что я хочу изменить фреймвысота макета в разных ориентациях экрана

пример кода

    wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);

            getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

            Log.v("height","height"+wm.getDefaultDisplay().getHeight());

            if(wm.getDefaultDisplay().getHeight() <= 427)
             {
                 Log.v("height","111");


((FrameLayout)findViewById(R.id.frameLayout1)).setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
         }
        else
        {
            ((FrameLayout)findViewById(R.id.frameLayout1)).setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
        }

Но это дает силу закрытия,

, если у кого-то есть идеи, пожалуйста, помогите мне.

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 13 апреля 2015

Вы должны использовать LinearLayout.LayoutParams (int width, int height, float weight)

FrameLayout frameLayout = new FrameLayout(context);
LinearLayout.LayoutParams layPra = new LinearLayout.LayoutParams(width,height,mWeight);
layPra .gravity = Gravity.CENTER | Gravity.BOTTOM;
frameLayout .setLayoutParams(layPra );
0 голосов
/ 26 августа 2011

Одним из способов является создание собственного представления и переопределение функций onLayout и onMeasure.В функции onLayout вы можете переопределить ширину и высоту.См. Пример класса LabelView.java здесь .

...