2013-04-02 3 views
0

Я просто изучаю развитие Android, и у меня возникают некоторые проблемы с его работой.Настройка пользовательского вида в макете в android

У меня есть активность, которая использует относительно макет. Мне нужно, чтобы у него было две кнопки внизу, а затем прямо над дном, я хочу, чтобы мой пользовательский вид занимал остальную часть пространства.

viewer.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/viewerLayout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<sketchViewer.AnimationPanelView 
    android:id="@+id/animationView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/homeFromViewerButton" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" /> 

<Button 
    android:id="@+id/homeFromViewerButton" 
    android:layout_width="640dp" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:text="Replay" /> 

<Button 
    android:id="@+id/replayButton" 
    android:layout_width="640dp" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true" 
    android:text="Home" /> 

</RelativeLayout> 

Проблема, которую я имею, я, что, когда я запускаю свою программу, мне нужно пройти ряд параметров в моем пользовательском виде конструктора, так что мой пользовательский вид решает, что он должен рисовать. Поэтому после создания экземпляра моего пользовательского представления (AnimationPanelView) я не уверен, как установить этот объект в пространство, которое я предоставил для представления.

Это мой класс активности:

Viewer.java

public class Viewer extends Activity { 

AnimationPanelView animationPanelView; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_viewer); 

    animationPanelView = new AnimationPanelView(this, true /*, more parameters here */); 
    animationPanelView.setBackgroundColor(Color.GREEN); 
    RelativeLayout v = (RelativeLayout) findViewById(R.id.viewerLayout); 
    v.addView(animationPanelView);  
} 

Прямо сейчас, с моей командой v.addView, вид занимает всю страницу, прикрывая кнопки в дно. Может кто-нибудь пролить некоторый свет на это? Я чувствую, что я рядом, но я немного поиграл с ним, и я просто застрял.

ответ

1

Ознакомьтесь с областью пользовательского представления here. Вам нужно переопределить onLayout и onMeasure, чтобы вы могли указать свой контейнер, насколько вы велики.

0

Вы добавляете другое настраиваемое представление в свой макет, вместо этого вы должны использовать animationPanelView = (AnimationPanelView) findViewById (R.id.animationView); animationPanelView.setBackgroundColor (Color.GREEN);

Смежные вопросы