2013-02-23 76 views
1

我想将listView的宽度设置为移动屏幕宽度的40%。由于40%在不同手机中的像素不同,我将无法在xml布局文件中设置宽度。有没有什么办法以编程方式为列表设置宽度Android以编程方式更改视图的宽度

+0

我想你设置了listview的权重 – 2013-02-23 06:01:39

+0

不,那不是我想要的。因为我的列表视图最初会出现在屏幕之外,并且只有在单击按钮时才会出现 – user2041902 2013-02-23 06:04:47

+0

您应该重申您的问题并指定您希望在运行时添加列表视图,因为这与您最初提出的问题有很大不同。 – Daniel 2013-02-23 06:15:40

回答

0

实际上,您通常可以使用layout_weight来以XML格式执行此操作。有关说明,请参阅Linear Layout guide。几件事情要记住:

  1. 确保您设置的大小,(layout_width的水平布局,layout_height为垂直的一)以0dp所以它不会与动态布局干涉。
  2. 您通常会在布局中的其他视图上加权,以便占用剩余的60%。如果不是,您可以定义一个weight sum
0
Display display = getWindowManager().getDefaultDisplay(); 
int width = (display.getWidth()*40)/100; 

你必须通过setparam越来越宽u必须设置成你的代码后,通过上面的代码来获得屏幕宽度尺寸。

+0

我尝试设置,但似乎有一个问题,因为视图不能被看到if参数是以编程方式设置的。我在xml中创建视图本身并尝试更改xml中的参数....可以发布您用于设置参数的代码 – user2041902 2013-02-23 06:31:51

+0

看到这个链接hopefulfull给你 – duggu 2013-02-23 06:35:12

0

您可以通过编程让屏幕宽度,然后让屏幕宽度的40%,并创下向ListView。而如果你想做到这一点使用XML,然后使用LinearLayout并设置android:weightSum为此,然后用weight.Using这样你就可以轻松做到这一点。

为了让屏幕重量的40%

Display display= ((WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
    int width = (display.getWidth()*40)/100; 

设定重量为视图XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#ffffff" 
    android:orientation="vertical" 
    android:weightSum="100" > 
    <Button android:layout_width="wrap_content" 
    android:layout_height="0dp" 
    android:layout_weight="50" 
    android:text="button1"/> 
    <Button android:layout_width="wrap_content" 
    android:layout_height="0dp" 
    android:layout_weight="50" 
    android:text="button2"/> 
</LinearLayout> 
0

您的意见和PARAMS术语概念的错误。您可以通过编程方式设置不同类型的宽度,您可以在xml布局中设置它。以编程方式将布局参数设置为视图的优点仅仅是在运行时更改视图布局参数的可能性。 你的问题的解决方案很容易,你只需要把你的listView放在一个LinearLayout里面,并将它的权重设置为.4

相关问题