当前位置: 代码迷 >> Android >> 再问关于怎么设置根据屏幕大小设置布局高度的有关问题
  详细解决方案

再问关于怎么设置根据屏幕大小设置布局高度的有关问题

热度:56   发布时间:2016-04-28 02:17:22.0
再问关于如何设置根据屏幕大小设置布局高度的问题
刚发了个关于设置屏幕大小的问题,但是没有说清楚,在这里再描述下。
ViewPager 里边添加了4个fragment,每个fragment显示一个listview的内容。
继承 Baseadapter。 在getview()里边 
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,剩下屏幕的高度/10);  
convertView.setLayoutParams(lp);
  //这样屏幕就能显示10行list的内容

现在就是想   剩下屏幕高度  =  screenheight -  screenheight /10 -screenheight/12 - screenheight/1000 ;

这样就要设置布局的高度了。即以下所说的。

请问,如何在代码中设置 布局的高度。
 比如说  通过以下代码获取屏幕高度后:
     DisplayMetrics dm = new DisplayMetrics();
       getWindowManager().getDefaultDisplay().getMetrics(dm);
       int screenheight = dm.heightPixels;

      screenheight /10;   screenheight/12     screenheight/1000 

为了自适应不同的手机屏幕大小,现在想在代码中以下设置布局的大小。
 具体想

    在代码中设置布局的大小:
    <LinearLayout
          android:layout_width="fill_parent"
          android:layout_height="50dp"      


改为
    <LinearLayout
         android:layout_width="fill_parent"
          android:layout_height="screenheight /10"








   <LinearLayout
          android:id="@+id/linearLayout1"
          android:layout_width="fill_parent"
          android:layout_height="18sp"
改为
  <LinearLayout
          android:id="@+id/linearLayout1"
          android:layout_width="fill_parent"
          android:layout_height="screenheight/12 "


把 
 <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="2dip"

改为为
       
 <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="screenheight/1000"

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFFFF"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="50dp"

        android:layout_gravity="center"
        android:background="#CDAD00"
        android:orientation="horizontal" >

        <ImageView
            android:id="@+id/imageText1"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_marginLeft="0.0sp"
            android:src="@drawable/btn_back" />

        <EditText
            android:id="@+id/editView1"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_marginBottom="10.0dip"
            android:layout_marginTop="10.0dip"
            android:layout_weight="1.0"
            android:background="@drawable/edittext_style" />

        <ImageView
            android:id="@+id/imageText2"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:src="@drawable/btn_search01" />
    </LinearLayout>

  <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="18sp"

        android:background="@color/coral"
        android:paddingBottom="10dip"
        android:paddingTop="10dip" >

        <TextView
            android:id="@+id/textview_essence"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1.0"
            android:gravity="center"
            android:text="@string/essence"
            android:textColor="@color/white"
            android:textSize="18sp" />

        <TextView
            android:id="@+id/textview_policy"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1.0"
            android:gravity="center"
            android:text="@string/policy"
            android:textColor="@color/lightwhite"
            android:textSize="18sp" />

        <TextView
            android:id="@+id/textview_comment"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1.0"
            android:gravity="center"
            android:text="@string/forum"
            android:textColor="@color/lightwhite"
            android:textSize="18sp" />
        
       <TextView
            android:id="@+id/textview_data"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1.0"
            android:gravity="center"
            android:text="@string/data"
            android:textColor="@color/lightwhite"
            android:textSize="18sp" />
    </LinearLayout>

 <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="2dip"

        android:layout_gravity="bottom"
        android:orientation="vertical"
         >

        <ImageView
            android:id="@+id/bottom_line"
            android:layout_width="40dip"
            android:layout_height="2dip"
            android:layout_marginLeft="20dip"
            android:scaleType="matrix"
            android:src="#8EE" />
    </LinearLayout>

 <android.support.v4.view.ViewPager
        android:id="@+id/forumpager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="0.67"
        android:background="#FFFFFF"
        android:flipInterval="30"
        android:persistentDrawingCache="animation" />
</LinearLayout>

请问 在代码里边设置意思高度的属性应该怎么处理呢?  麻烦会的朋友详细说明下吧,谢啦。

 图1 所示,就是要设置  L 和 h高度 和m 的高度,就是为了后面获取 剩下屏幕的高度,比如显示 listview的10行,现在出现
最后显示半行  正常要显示一整行的。






------解决思路----------------------
我觉得楼主思考的方向是错的 虽然没看懂要赶啥
------解决思路----------------------
临时的办法都是在代码里而不是布局文件获取屏幕宽高,设置相应控件属性;很多厉害点的应用会采用2种方式:一是写不同的layout文件,比如layout-mdp,layout-hdp等等,每个里面都有同一个布局文件但是数值不同;二是在不同的values里定义一些代表尺寸,文字大小的属性,在layout使用这些属性,那么调用时也会自动适配。
本人比较懒,一般都在代码里改了,也许哪天找到别人写好的适配资源文件就不用这么麻烦了
  相关解决方案