こんにちは、メイン画面があります。
<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>
そして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;
}
}
});
プログラムで追加したい
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams((w*2)/3, LayoutParams.WRAP_CONTENT);
どこw
display = getWindowManager().getDefaultDisplay();
@SuppressWarnings("deprecation")
w = display.getWidth();
しかし、私がこれを好きなとき
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;
アプリケーションがクラッシュします。 (デバイスの画面の幅と高さに関連付けられている)パラメータを使用してプログラムで作成する方法を教えていただけますか?私はどんな提案もします。ありがとうございました。
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( (w*2)/3, LayoutParams.WRAP_CONTENT ); linLayout.setLayoutParams(lp);
LinearLayout
は相対レイアウトの子であるため、これはエラーをスローします。そのため、RelativeLayoutParams
を設定する必要があります。
代わりにこれを使用してください
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
(w*2)/3,
RelativeLayout.LayoutParams.WRAP_CONTENT
);
linLayout.setLayoutParams(lp);
または以下のように、新しいLayoutParams
を作成する代わりに、ビューの既存のLayoutParams
を再利用できます。
RelativeLayout.LayoutParams lp = linLayout.getLayoutParams();
lp.width = (w*2)/3;
lp.height = RelativeLayout.LayoutParams.WRAP_CONTENT;
linLayout.setLayoutParams(lp);
新しいLayoutParamsを作成する代わりに、既存のものを変更する必要があります。
コードを次のように変更します。
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;