2014-01-30 2 views
3

Я хочу получить точную высоту видимого макета программно, как показано на рисунке. Я использовал активность фрагмента Шерлока как основной вид деятельности, который содержит разные фрагменты. Я попытался получить высоту и ширину экрана с помощью Display and display matrix, но он дает высоту и ширину всего экрана. Но я хочу получить только видимый вид активности ребенка. пожалуйста помогите. заранее спасибо.Android Получить высоту видимого макета программно

enter image description here

Главная XML (из TabBar)

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <TabHost 
     android:id="@android:id/tabhost" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 

     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:orientation="vertical" > 

      <FrameLayout 
       android:id="@android:id/tabcontent" 
       android:layout_width="@dimen/fr_layout_width" 
       android:layout_height="@dimen/fr_layout_height" 
       android:layout_weight="0" /> 

      <FrameLayout 
       android:id="@+android:id/realtabcontent" 
       android:layout_width="fill_parent" 
       android:layout_height="@dimen/fr_layout_height" 
       android:layout_weight="1" /> 

      <TabWidget 
       android:id="@android:id/tabs" 
       android:layout_width="fill_parent" 
       android:layout_height="@dimen/hdpi_tab_layout_height" 
       android:layout_weight="0" 
       android:background="@android:color/transparent" 
       android:gravity="bottom" 
       android:orientation="horizontal" /> 
     </LinearLayout> 
    </TabHost> 
</android.support.v4.widget.DrawerLayout> 

ребенок XML (Xml детской деятельности)

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools"   
    android:id="@+id/mainscroll" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    tools:context=".MainActivity"> 

    <LinearLayout 
     android:id="@+id/topliner" 
     android:layout_width="match_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" 
     > 

    </LinearLayout> 

</ScrollView> 

ответ

1

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

для ActionBar и высота TabBar

 int tabHeight = mTabHost.getTabWidget().getHeight(); 
    int actionbarheight = getSupportActionBar().getHeight();//getActionbar() insted of for Api greater 13 than 

высота статусной

public int getStatusBarHeight() { 
     int result = 0; 
     int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); 
     if (resourceId > 0) { 
      result = getResources().getDimensionPixelSize(resourceId); 
     } 
     return result; 
} 

int statusbarheight = getStatusBarHeight(); 

для получения размера экрана

 Display display = getWindowManager().getDefaultDisplay(); 

    if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB_MR2) 
    { 

     width = display.getWidth(); // deprecated 
     height = display.getHeight()- (tabHeight + actionbarheight + statusbarheight); 
    } 
    else { 

     Point size1 = new Point(); 
     display.getSize(size1); 
     width = size1.x; 
     height = size1.y - (tabHeight + actionbarheight + statusbarheight);//visible layout height 
    } 
0
int height = getWindow().getWindowManager().getDefaultDisplay().getHeight(); 
+0

Я попробовал это раньше, но он дает всю высоту экрана. кстати, 'getHeight();' устарел с тех пор, как API 13 –

1

Он получит высоту всего окна

Display display = getWindowManager().getDefaultDisplay(); 
Displayheight = display.getHeight(); 

Теперь возьмите взять высоту ActionBar

ActionBar actionBar = getActionBar(); 
actionBarHeight = actionBar.getHeight(); 

давайте один tabHost & его высота напр.

TabHost tabHost = getTabHost(); 
TabHost.TabSpec spec; 
Intent intent; 
intent = new Intent().setClass(this, vTab1.class); 
spec = tabHost.newTabSpec("First").setIndicator("First").setContent(intent); 
tabHost.addTab(spec); 
intent = new Intent().setClass(this, vTab2.class); 
spec = tabHost.newTabSpec("Second").setIndicator("Second").setContent(intent);tabHost.addTab(spec); 
int height = tabHost.getTabWidget().getHeight(); 

Теперь вычитаем Высота ActionBar & TabWidget из окна Высота

DesiredArea = DisplayHeight - (actionBarHeight + height); 

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

+0

я решил его через некоторое время. спасибо за подробное объяснение –

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