2013-11-30 3 views
0

чувствительность Я нашел следующий код в slidingmenu library примерах, в ResponsiveUIActivity.java, я не знаю, что это if (findViewById(R.id.menu_frame) == null) { среднее:Android, slidingmenu, фрагмент

// check if the content frame contains the menu frame 
if (findViewById(R.id.menu_frame) == null) { 
    setBehindContentView(R.layout.menu_frame); 
    getSlidingMenu().setSlidingEnabled(true); 
    getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); 
    // show home as up so we can toggle 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
} else { 
    // add a dummy view 
    View v = new View(this); 
    setBehindContentView(v); 
    getSlidingMenu().setSlidingEnabled(false); 
    getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE); 
} 

в R.id.menu_frame пунктов до 3 макетов это один находится в layout папка:

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

это один находится в папке layout-xlarge:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android" 
       android:layout_width = "match_parent" 
       android:layout_height = "match_parent" 
       android:orientation = "horizontal" 
       android:baselineAligned = "true"> 

    <FrameLayout 
     android:id = "@+id/menu_frame" 
     android:layout_width = "0dp" 
     android:layout_height = "match_parent" 
     android:layout_weight = "1" /> 

    <FrameLayout 
     android:id = "@+id/content_frame" 
     android:layout_width = "0dp" 
     android:layout_height = "match_parent" 
     android:layout_weight = "2" /> 

</LinearLayout> 

и это один находится в папке layout-large-land:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 

    <FrameLayout 
     android:id="@+id/menu_frame" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" /> 

    <FrameLayout 
     android:id="@+id/content_frame" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="3" /> 

</LinearLayout> 

в 3 выше компоновок menu_frame равна нулю, но как раздвижными меню работает с темой?

ответ

2

В каталогах макетов layout, layout-xlarge и layout-large-land указаны различные макеты для поддержки размера экрана и ориентации экрана. Вы можете больше узнать об этом here.

Условие, if(findViewById(R.id.menu_frame) == null) проверяет, существует ли view или нет.

То есть, если условие выполняется true, это означает, что скольжение меню в настоящее время закрыты, и, таким образом, вы размещения menu view «за» в current view. Однако, когда условие равно false, это указывает на то, что пользователь нажал на кнопку меню в верхнем левом углу и, таким образом, выполняет часть else, которая помещает current view «сзади» и отображает menu view.

+0

Неправильно ** Ответ **, я смотрю на код снова и снова, и ответ здесь: setContentView (R.layout.responsive_content_frame); 'этот код работает до (' if'), который я написал в моем вопросе есть 3 макета в 'layout',' layout-xlarge' и 'layout-large-land', и теперь есть элемент с идентификатором' menu_frame' в 'layout \ responsive_content_frame.xml'. Я не знаю, но Я думаю, что метод 'findViewById()' в некотором отношении относится к методу 'setContentView()'. эта теория правильная? – Omid

+0

Это было мое объяснение на ваш вопрос «** что есть, если (findViewById (R.id.menu_frame) == null) {mean **" – JoelFernandes

+0

Да, спасибо :) и я нашел ** [this] (http : //stackoverflow.com/questions/16476424/why-findviewbyid-is-returning-null-if-setcontentview-is-not-called) **. не могли бы вы прочитать его? – Omid

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