私のコードには、複数の子レイアウトを持つXMLファイルがあります。 Aそして、デバイスの画面幅に応じて、これらの子レイアウトの幅の1つをプログラムで設定したいだけです。これまで、レイアウトパラメータ、setparam、およびその他のメソッドを試しましたが、レイアウトIDの取得時にnullポインタ例外が表示されます。
親レイアウトは相対レイアウトで、最初の子レイアウトは線形レイアウトです(「このレイアウトでは幅を変更する必要があります」)
<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コード:-
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;
}
これが私のコードスニペットで、これまでに試した部分にコメントして、すばらしい結果が得られます。
これを行うことができますか:IDをこの子線形レイアウトに設定してから:
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()
編集:
すでにこれを試したようです、ごめんなさい。しかし、2つの線形レイアウトはありませんか?
これをJavaコード:
int width = 300;
int height = LayoutParams.WRAP_CONTENT;
LinearLayout childLayout = (LinearLayout) findViewById(R.id.childLayout);
childLayout.setLayoutParams(new LayoutParams(width, height));