Сер*_*лов 14 android android-layout layoutparams android-activity
你好我有一个主屏幕.
<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>
Run Code Online (Sandbox Code Playgroud)
并且有一个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;
}
}
});
Run Code Online (Sandbox Code Playgroud)
我想以编程方式添加
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams((w*2)/3, LayoutParams.WRAP_CONTENT);
Run Code Online (Sandbox Code Playgroud)
哪里w
display = getWindowManager().getDefaultDisplay();
@SuppressWarnings("deprecation")
w = display.getWidth();
Run Code Online (Sandbox Code Playgroud)
但是当我这样做的时候
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;
Run Code Online (Sandbox Code Playgroud)
我的应用程序崩溃了.您能否告诉我如何使用我的参数以编程方式创建(与设备屏幕的宽度和高度相关联)?我会接受任何建议.谢谢.
Tri*_*ode 17
Run Code Online (Sandbox Code Playgroud)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);
Run Code Online (Sandbox Code Playgroud)
或者不是创建新的,LayoutParams
您可以重用LayoutParams
视图的现有视图,如下所示.
RelativeLayout.LayoutParams lp = linLayout.getLayoutParams();
lp.width = (w*2)/3;
lp.height = RelativeLayout.LayoutParams.WRAP_CONTENT;
linLayout.setLayoutParams(lp);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
39852 次 |
最近记录: |