2011-12-17 4 views
1

У меня есть relativeLayout, что я хотел бы использовать тему theme.dialog android, она должна иметь заданную ширину 240dip. Когда я укажу весь макет и его дети в xml, это работает. Однако, когда я пытаюсь раздуть xml, чтобы добавить больше просмотров (код ниже), Layout заполняет ширину экрана.RelativeLayout не придерживается установленной ширины при раздувании

Context context = this; 
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    RelativeLayout header = (RelativeLayout) inflater.inflate(R.layout.headphonepopupheader, null); 

headphonepopup.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="240dp" 
android:layout_height="wrap_content" > 

<ImageButton 
    android:id="@+id/closebutton" 
    android:layout_width="24dp" 
    android:layout_height="24dp" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentRight="true" 
    android:layout_marginLeft="216dp" 
    android:background="@drawable/closebutton" /> 

</RelativeLayout> 

Есть ли способ решить эту проблему?

ответ

3

При надувании RelativeLayout не используйте подпись метода , которая у вас есть. Вместо этого используйте inflate(), который принимает родительский контейнер в качестве второго параметра и логический как третий. Поставьте возможного родителя для RelativeLayout во 2-й параметр, и если вы не хотите, чтобы немедленно добавили RelativeLayout, отправьте false в качестве третьего параметра.

Leastways, этот рецепт очищает все виды RelativeLayout проблемы с инфляцией при использовании RelativeLayout в качестве основы для строки в ListView.

+0

Я хотел бы, чтобы родственник был корнем ViewGroup. Это возможно? – Frazerm63

+0

@ Frazerm63: Все, что вы создаете, проникает во что-то другое. Даже если вы вызываете 'setContentView()', этот 'View' помещается в другой контейнер, поставляемый' Activity'. Итак, если вы хотите, чтобы это «RelativeLayout» было вашим представлением контента, вызовите 'setContentView()' и Android раздувает макет для вас. – CommonsWare

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