我正在为Android设计应用程序,其中我在顶部保留了HorizontalScrollView
,以在滚动视图中显示3个登录控件(用户名和密码的文本框)。我几乎达到了我想要的除了一个小缺陷,它没有占据屏幕的整个宽度,如下图所示。如何将宽度设为fill_parent
?
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:panel="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#CCC"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<org.miscwidgets.widget.Panel
android:id="@+id/mytopPanel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
panel:animationDuration="1000"
panel:closedHandle="@drawable/top_switcher_collapsed_background"
panel:content="@+id/mypanelContent"
panel:handle="@+id/mypanelHandle"
panel:linearFlying="true"
panel:openedHandle="@drawable/top_switcher_expanded_background"
panel:position="top" >
<Button
android:id="@+id/mypanelHandle"
android:layout_width="wrap_content"
android:layout_height="33dip"
android:layout_gravity="center_horizontal" />
<HorizontalScrollView
android:id="@+id/mypanelContent"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<EditText
android:id="@+id/editTextUserName"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="3dp"
android:layout_marginTop="6dp"
android:hint="@string/editUserName" >
</EditText>
<EditText
android:id="@+id/editTextPassword"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="3dp"
android:hint="@string/editUserPwd" >
</EditText>
<TextView
android:id="@+id/textView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#323299"
android:gravity="center"
android:padding="4dip"
android:text="@string/drpDwnTxt"
android:textColor="#eee"
android:textSize="16dip"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/linearLayout"
android:orientation="vertical" >
<EditText
android:id="@+id/editTextUserName1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="3dp"
android:layout_marginTop="6dp"
android:hint="@string/editUserName" >
</EditText>
<EditText
android:id="@+id/editTextPassword1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="3dp"
android:hint="@string/editUserPwd" >
</EditText>
<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#323299"
android:gravity="center"
android:padding="4dip"
android:text="@string/drpDwnTxt"
android:textColor="#eee"
android:textSize="16dip"
android:textStyle="bold" />
</LinearLayout>
</RelativeLayout>
</HorizontalScrollView>
</org.miscwidgets.widget.Panel>
</LinearLayout>
</FrameLayout>
答案 0 :(得分:0)
亲爱的,我也遇到了这个问题,我解决了这个问题,所以你使用这个代码。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relLayoutLogin"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bkg_poi_ipad"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/tabRowHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/heder_poi_ipad" >
<Button
android:id="@+id/btnBack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:background="@drawable/img_btn_back" />
<TextView
android:id="@+id/lblTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="@string/loginTitle"
android:textColor="#000000"
android:textSize="30dp"
android:textStyle="bold" />
</RelativeLayout>
<LinearLayout
android:id="@+id/linearLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:orientation="vertical" >
<TextView
android:id="@+id/lblUsername"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/usernameTitle"
android:textColor="#FFFFFF"
android:textSize="20dp" />
<EditText
android:id="@+id/txtUsername"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:inputType="text" />
<TextView
android:id="@+id/lblPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@string/passwordTitle"
android:textColor="#FFFFFF"
android:textSize="20dp" />
<EditText
android:id="@+id/txtpassword"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:inputType="textPassword" />
<Button
android:id="@+id/btnLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:background="@drawable/btn_login_ipad" />
</LinearLayout>
</RelativeLayout>
它看起来像这样请参考..
答案 1 :(得分:0)
这是你可以做的。
在XML中:
定义1个水平线性布局。
定义3个垂直线性布局。
在每个垂直线性布局中,将用于用户名和密码的EditTexts对。 [确保它们的宽度属性为 "fill_parent"
,即每个editTexts应填充它们所在的垂直线性布局宽度]
将这3个垂直线性布局放在水平线性布局中。
在Java中:
使水平线性布局(包含其他三个布局)的宽度为显示宽度的3倍。
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
horizontalLayout = (LinearLayout) findViewById(R.id.yourHorizonatalLinearLayout);
horizontalLayout.setLayoutParams(new LinearLayout.LayoutParams(
(width * 3), height));
现在,对于每个垂直线性布局(放置在水平线性布局内并包含一对用户名和密码字段),使宽度等于设备显示的宽度。
下面的代码是针对其中一个垂直线性布局的,您还需要为其他两个布局重复此操作。类似的代码片段,只需更改ID即可。
firstEditLayout = (LinearLayout) findViewById(R.id.yourFirstVerticalLinearLayout);
firstEditLayout.setGravity(Gravity.CENTER_VERTICAL);
firstEditLayout.setLayoutParams(new LinearLayout.LayoutParams(
(width), height));
P.S。 :我希望我已经足够清楚了解你。