Как поставить Custom View над встроенными представлениями в Android? - PullRequest
1 голос
/ 11 марта 2010

Я занимаюсь разработкой небольшого приложения для Android. Я создаю свой собственный вид.

Я планирую сделать макет следующим образом:

<LinearLayout>
   <MyView>
   <Button><Button>
</LinearLayout>

Но когда я запускаю свою программу, мой пользовательский вид покрывает весь экран. Есть ли способ избежать этого?

Я уже пытался добавить android:layout_width, layout_height к wrap_content, fill_partent, но не повезло.

Ответы [ 3 ]

1 голос
/ 11 марта 2010

Я обычно помещаю FrameLayout туда, где я хочу свой пользовательский вид, затем код, я создаю свой вид и добавляю его к FrameLayout.

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#0BF">

    <FrameLayout
        android:id="@+id/GLFrame"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <FrameLayout
        android:id="@+id/ActivityFrame"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent" />

</FrameLayout>

И доступ, который из кода, как этот.

FrameLayout glFrame = (FrameLayout)findViewById(R.id.GLFrame);
glFrame.addView(new NativeBackgroundSurface(this));
0 голосов
/ 11 марта 2010

В дополнение к уже предложенным способам, есть еще один способ. Если вы знаете, каков будет размер этого представления, или вы можете программно определить его размер, вы можете переопределить метод onMeasure, который сообщает ОС, насколько велико представление. Например, если вы пишете игру или что-то, что использует Canvas, вы можете использовать методы getHeight() и getWidth(), или вы можете получить размер напрямую из любых параметров, которые вы использовали при создании холста. OnMeasure прост в использовании:

@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
    setMeasuredDimension(width, height);
}

Обратитесь к документации , если вам нужна дополнительная информация о параметрах. (Если это не имеет смысла, не волнуйтесь, это не для меня тоже: P Но вы можете использовать это, фактически не беспокоясь о widthMeasureSpec и heightMeasureSpec, пока вы можете вычислить размер, который должен быть вид правильно.)

0 голосов
/ 11 марта 2010

Предполагая, что вы хотите, чтобы ваш макет занимал все, кроме пространства, занимаемого кнопками, вы хотите расположить макеты кнопок, а затем выровнять свой вид сверху по родительским элементам и макету над кнопкой:

 <RelativeLayout 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"
>

<Button android:layout_width= whatever 
android:layout_height= whatever
    android:id="@+id/button"
    android:layout_alignParentBottom="true" />

<MyView android:layout_width="fill_parent" 
android:layout_height="fill_parent"
    android:layout_alignParentTop="true"
    android:layout_above ="@id/button"/>

</RelativeLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...