2013-03-19 25 views
13

Xin chào Tôi có màn hình chính.Thêm bố cục với các tham số theo lập trình Android

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".MainActivity" > 
<fragment 
    android:id="@+id/map" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    class="com.google.android.gms.maps.SupportMapFragment"/> 
<ImageButton 
    android:id="@+id/imageButton1" 
    android:layout_width="55dp" 
    android:layout_height="50dp" 
    android:layout_alignParentTop="true" 
    android:layout_marginTop="10dp" 
    android:layout_toLeftOf="@+id/toggleButton1" 
    android:background="@android:drawable/btn_default" 
    android:contentDescription="@string/app_name" 
    android:scaleType="centerCrop" 
    android:src="@drawable/plus_grey" /> 

<LinearLayout 
    android:id="@+id/lay" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentRight="true" 
    android:layout_marginEnd="0dp" 
    android:background="#A0FFFFFF" 
    android:orientation="horizontal" 
    android:visibility="invisible" > 

    <TextView 
     android:id="@+id/locinfo" 
     android:layout_width="match_parent" 
     android:layout_height="60dp" 
     android:textColor="@color/cherniy" 
     android:textSize="20sp" 
     android:visibility="visible" /> 
</LinearLayout> 
</RelativeLayout> 

Và có một ImageButton

    button = (ImageButton) findViewById(R.id.imageButton1); 
     button.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       if (bIcon == false) { 
        button.setImageResource(R.drawable.plus_yellow);                 
        m = myMap.addMarker(new MarkerOptions().position(myMap.getCameraPosition().target).draggable(true));      
        LinearLayout linLayout = (LinearLayout)findViewById(R.id.lay); 
        t = (TextView)findViewById(R.id.locinfo);      
        linLayout.setVisibility(View.VISIBLE); 
        t.setVisibility(View.VISIBLE);      
           bIcon = true; 
       } 
       else { 
        button.setImageResource(R.drawable.plus_grey);            
        m.remove(); 
        LinearLayout linLayout = (LinearLayout)findViewById(R.id.lay); 
        t.setVisibility(View.INVISIBLE); 
        linLayout.setVisibility(View.INVISIBLE);       
        bIcon = false;     
       }        
      } 
     }); 

Tôi muốn lập trình thêm

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams((w*2)/3, LayoutParams.WRAP_CONTENT); 

nơi w

display = getWindowManager().getDefaultDisplay(); 
@SuppressWarnings("deprecation") 
w = display.getWidth(); 

Nhưng khi tôi làm như

này
   button.setImageResource(R.drawable.plus_yellow);                 
       m = myMap.addMarker(new MarkerOptions().position(myMap.getCameraPosition().target).draggable(true));      
       LinearLayout linLayout = (LinearLayout)findViewById(R.id.lay); 
       LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams((w*2)/3, LayoutParams.WRAP_CONTENT); 
       linLayout.setLayoutParams(lp); 
       t = (TextView)findViewById(R.id.locinfo);      
       linLayout.setVisibility(View.VISIBLE); 
       t.setVisibility(View.VISIBLE);      
       bIcon = true; 

Lỗi ứng dụng của tôi. Bạn có thể vui lòng cho biết làm thế nào để lập trình tạo ra với các thông số của tôi (gắn liền với chiều rộng và chiều cao của màn hình của thiết bị)? Tôi sẽ đưa ra bất kỳ gợi ý nào. Cảm ơn bạn.

Trả lời

17
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
    (w*2)/3, 
    LayoutParams.WRAP_CONTENT 
); 
linLayout.setLayoutParams(lp); 

này sẽ ném lỗi vì LinearLayout là con của bố trí tương đối, vì vậy bạn phải thiết lập RelativeLayoutParams cho điều đó.

Thay vì sử dụng này

RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
    (w*2)/3, 
    RelativeLayout.LayoutParams.WRAP_CONTENT 
); 
linLayout.setLayoutParams(lp); 

hoặc Thay vì tạo mới LayoutParams bạn có thể tái sử dụng hiện LayoutParams của view như hình dưới đây.

RelativeLayout.LayoutParams lp = linLayout.getLayoutParams(); 
lp.width = (w*2)/3; 
lp.height = RelativeLayout.LayoutParams.WRAP_CONTENT; 
linLayout.setLayoutParams(lp); 
+0

Cảm ơn bạn. Những gì bạn cần –

+0

bạn có thể nhập khẩu? Tôi biết là "viewgroup" nhưng hãy đặt = :) – delive

0

Thay vì tạo LayoutParams mới, bạn nên sửa đổi tệp hiện có.

Thay đổi mã của bạn để:

button.setImageResource(R.drawable.plus_yellow);                 
m = myMap.addMarker(new MarkerOptions().position(myMap.getCameraPosition().target).draggable(true));      
LinearLayout linLayout = (LinearLayout)findViewById(R.id.lay); 
LinearLayout.LayoutParams lp = linLayout.getLayoutParams(); 
final int left_margin = whatever; 
final int top_margin = 0; 
final int right_margin = whatevermore; 
final int bottom_margin = 0; 
lp.setMargins(left_margin, top_margin, right_margin, bottom_margin); 
lp.width = (w*2)/3; 
linLayout.setLayoutParams(lp); 
t = (TextView)findViewById(R.id.locinfo);      
linLayout.setVisibility(View.VISIBLE); 
t.setVisibility(View.VISIBLE);    
bIcon = true; 
Các vấn đề liên quan