我在视图中设置一些对象时遇到了一些问题。
我有2 EditText
和2 Button
,一个在另一个之下。在屏幕的底部,我有一个ImageView
,我希望在没有滚动的情况下留在那里。
问题
我有ScrollView
除了ImageView
以外的所有对象,但最后Button
未显示,因为图片覆盖了它。
修改
我的代码是:
<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" >
<!-- Layout with Image set at the top of the view, outside ScrollView -->
<LinearLayout
android:id="@+id/linearLayoutLogoFactor_main"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal" >
<ImageView
android:id="@+id/imageViewLogoFactor_main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/logo"/>
</LinearLayout>
<ScrollView
android:id="@+id/scrollViewMain"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/linearLayoutLogoFactor_main"
android:layout_marginTop="7dp">
<RelativeLayout
android:id="@+id/relativeLayoutMain"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:focusable="true"
android:focusableInTouchMode="true">
<EditText
android:id="@+id/editTextLoginUsuario"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentTop="true"
android:hint="@string/login_usuario"
android:ems="10"
android:imeOptions="actionNext"
android:selectAllOnFocus="true" />
<EditText
android:id="@+id/editTextLoginPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_below="@+id/editTextLoginUsuario"
android:layout_marginTop="5dp"
android:hint="@string/login_password"
android:ems="10"
android:inputType="textPassword"
android:imeOptions="actionDone"
android:selectAllOnFocus="true" />
<CheckBox
android:id="@+id/checkBoxRecordarDatos"
android:button="@drawable/checkbox_selector"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editTextLoginPassword"
android:layout_centerHorizontal="true"
android:layout_marginTop="2dp"
android:text="@string/login_recordar"
android:textSize="@dimen/textSize"
android:onClick="setCheckBoxValue" />
<LinearLayout
android:id="@+id/linearLayoutEntrar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/checkBoxRecordarDatos"
android:gravity="center"
android:layout_marginTop="7dp"
android:weightSum="1.0">
<Button
android:id="@+id/buttonEntrar"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="@string/login_entrar"
android:textColor="@android:color/white"
android:textStyle="bold"
android:textSize="@dimen/textSize"
android:onClick="entrar" />
</LinearLayout>
<!-- Layout and Button which are not seen correctly, it is covered -->
<LinearLayout
android:id="@+id/linearLayoutJugar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/linearLayoutEntrar"
android:gravity="center"
android:layout_marginTop="7dp"
android:layout_marginBottom="30dp"
android:weightSum="1.0">
<Button
android:id="@+id/buttonJugar"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.5"
android:text="@string/login_jugar"
android:textColor="@android:color/white"
android:textStyle="bold"
android:textSize="@dimen/textSize"
android:onClick="jugar" />
</LinearLayout>
</RelativeLayout>
</ScrollView>
<LinearLayout
android:id="@+id/linearLayoutImagenInferior_main"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_alignParentBottom="true" >
<ImageView
android:id="@+id/imageViewImagenInferior_main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/la_electrica_de_las_empresas"
android:adjustViewBounds="true"/>
</LinearLayout>
那么当我滚动到底部而不被Button
覆盖时,如何正确设置它以查看最后ImageView
?
答案 0 :(得分:0)
<RelativeLayout>
<ScrollView>
<LinearLayout>
//2 EditTexts, 2 Buttons...
</LinearLayout>
</ScrollView>
<LinearLayout>
<ImageView>
</ImageView>
</LinearLayout>
</RelativeLayout>
尝试这种布局结构..
答案 1 :(得分:0)
您可以首先将线性布局替换为相对布局,作为ScrollView的子项。线性布局行为应防止视图重叠。
您可以分享整个布局文件和问题的屏幕截图吗?
编辑:我怀疑,您的重叠视图问题来自您使用相对布局。用以下内容替换主父节点Relative Layout:
<LinearLayout 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"
android:orientation="vertical" >
答案 2 :(得分:0)
您需要为此要求使用权重属性。将布局分为两部分(70/30),如我在示例中使用的那样,并使顶部可滚动。另见快照。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ScrollView
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="7" >
</ScrollView>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="3"
android:background="#ffff00" >
<!-- ImageView here -->
</LinearLayout>
</LinearLayout>
答案 3 :(得分:0)
The solution to your problem is to use weight attribute for this requirement. Divide layout into two parts(40:60) see example code
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ScrollView
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="4" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="6"
android:background="#ffff00" >
<!-- Buttons and Edit Text here -->
</LinearLayout>
</ScrollView>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="6"
android:background="#ffff00" >
<!-- ImageView here -->
</LinearLayout>