2012-12-05 11 views
11

Kodumda birden fazla alt düzenine sahip bir XML dosyanız var. Ve ben sadece bu alt düzeninin genişliğini aygıtın ekran genişliğine göre programatik olarak ayarlamak istiyorum. Şimdiye kadar Layout params, setparam ve diğer yöntemleri denedim ama düzeni id almada null pointer istisnası gösterir.Alt düzen genişliğini programatik olarak ayarlayın ANDROID'de?

benim ana düzeni Bağıl Düzeni, ve 1 çocuk Düzeni Doğrusal Düzen ("bu düzen için ben genişliği değiştirmek gerekiyor")

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/parentlayout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <LinearLayout 
     android:id="@+id/childlayout" 
     android:layout_width="250dip" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" 
     android:background="#153746"> 
     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:background="@drawable/sub_title" 
      android:gravity="center_vertical" > 
      <TextView 
       android:id="@+id/menu_header_label" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textStyle="bold" 
       android:text="asd" 
       android:textColor="#ffffff" 
       android:layout_marginLeft="10dip" /> 

      <ImageView 
       android:id="@+id/menu_header" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center_horizontal" /> 
     </LinearLayout> 
     <ListView 
      android:id="@+id/menu_listview" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:divider="@android:color/darker_gray" 
      android:dividerHeight="1dip" 
      android:scrollingCache="false" /> 
    </LinearLayout> 

    <FrameLayout 
     android:id="@+id/overlay" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 
    </FrameLayout> 

</LinearLayout> 

Java Kod olduğu: -

 public class SlideMenu extends LinearLayout { 

    // keys for saving/restoring instance state 
    public final static String KEY_MENUSHOWN = "menuWasShown"; 
    private final static String KEY_STATUSBARHEIGHT = "statusBarHeight"; 
    private final static String KEY_SUPERSTATE = "superState"; 

// Display display = ((WindowManager) getWindowToken()).getDefaultDisplay(); 
// int width = display.getWidth(); // deprecated 
// int height = display.getHeight(); // deprecated 
// float layWidth = (width*70)/100; 
// 
//// LinearLayout view= (LinearLayout)findViewById(R.id.childlayout); 
//// LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) view.getLayoutParams(); 
//// params.width = 130; 
//// view.setLayoutParams(params); 
// view.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, theSizeIWant)); 

    public static class SlideMenuItem { 
     public int id; 
     public Drawable icon; 
     public String label; 
    } 

İşte benim kod parçacığı ve ben şimdiye kadar denedim hangi parçasını yorum ve

+0

.kodunuz? –

+0

XML'inizi ekran görüntüsü olarak yayınlamayın, asıl kodu soruya koyun. – Cerbrus

+0

Burada cevaplandı http://stackoverflow.com/questions/5715612/how-to-set-setlayoutparams-for-linear-layout-elements –

cevap

12

bunu Can herhangi ince result..`` olsun: o zaman bu çocuk doğrusal düzene id ayarlayın ve:

LinearLayout linLayout = (LinearLayout) findViewById(R.id.yourID); 
LinearLayout .LayoutParams layoutParams= new 
LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 
LinearLayout.LayoutParams.MATCH_PARENT);//or whatever , you can set the width and height programmatically and then setLayoutParams() 

DÜZENLEME:

Ben zaten bu çalıştı bakın, üzgünüm. Ama iki lineer düzen var mı? java kodunda

+0

yup buddy daha fazla var iki Doğrusal Düzen! cevabınız için nut thnx .. :) – Manish

+0

Jeah bazen apaçık göremiyoruz :) – vodich

6

koyun bu:

int width = 300; 
int height = LayoutParams.WRAP_CONTENT; 
LinearLayout childLayout = (LinearLayout) findViewById(R.id.childLayout); 
childLayout.setLayoutParams(new LayoutParams(width, height)); 
+0

@ shreya: Böyle hızlı bir cevap için thnx ... ama bunu denedim, 4. satırda null pointer istisnası veriyoruz set layout params :(. – Manish

+0

Öyleyse düzeni referansını doğru bir şekilde bulamadınız. childLayout hala bu noktada null oldu. Lütfen kodunuzu gönderin –

+0

@ sherya- i sadece mesajımı güncelledim !! lütfen bunu chech. – Manish

İlgili konular