【问题标题】:Android : ScrollView stretches background imageAndroid:ScrollView 拉伸背景图片
【发布时间】:2012-07-24 11:38:47
【问题描述】:

我想在带有背景图像的登录表单中使用滚动视图,但图像会拉伸。

我的代码如下所示:

 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
     android:id="@+id/login_layout" >

    <LinearLayout 
        android:layout_width="250dp"
        android:layout_height="270dp"
        android:layout_marginTop="40dp"
        android:gravity="center"
        android:orientation="vertical"
        android:background="@drawable/login" >

        <LinearLayout 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="30dp"
            android:orientation="vertical" >

            <TextView 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/username_login" />

            <EditText
                android:id="@+id/username_login"
                android:inputType="text"
                android:layout_width="200dp"
                android:layout_height="30dp"
                android:paddingLeft="5dp"
                android:paddingTop="2dp"
                android:background="@drawable/edit_text" />

            <TextView 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/password_login" />

        </LinearLayout>

    </LinearLayout>

</LinearLayout>

</ScrollView>

我有 2 个用户名和密码的文本编辑以及一个登录按钮

android:background="@drawable/login"

是包含文本编辑和按钮的布局的背景图像

有什么帮助吗?

知道我在活动中设置了背景(延伸)

我在活动中设置背景

private void setBackground(){


        LinearLayout layout = (LinearLayout) findViewById(R.id.login_layout);
        layout.setBackgroundDrawable(application.getBackground01());

    }

【问题讨论】:

  • android:background="@drawable/login" 在你的 ScrollView 中设置这个
  • 你试过用 android:src 代替 android:background 吗?
  • 我编辑了我的帖子,请检查一下
  • @AndroSelva 有没有用于 LinearLayout 的 android:src??
  • 你确定不是用 android:layout_width="250dp" android:layout_height="270dp" 这两条线自己拉伸的吗?

标签: android android-layout scrollview


【解决方案1】:

经过这么多研究得到了解决方案:

Step1:从 .xml 文件中删除以下行

android:background="@drawable/background"

Step2(a):如果您在 Activity 中尝试,请将 onCreate 设置为

protected void onCreate(Bundle savedInstanceState) { 
    .... 
    getWindow().setBackgroundDrawableResource(R.drawable.image_resourcename);
    ....
}

Step2(b): 如果你在 Fragment 中尝试设置 onCreateView 为

protected void onCreate(Bundle savedInstanceState) {
    .... 
    getActivity().getWindow().setBackgroundDrawableResource(R.drawable.image_resourcename);
    ....
}

【讨论】:

    【解决方案2】:

    你可以试试这个代码。希望会奏效。

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/login_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/login"
        android:gravity="center"
        android:orientation="vertical" >
    
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
    
            <LinearLayout
                android:layout_width="250dp"
                android:layout_height="270dp"
                android:layout_marginTop="40dp"
                android:gravity="center"
                android:orientation="vertical" >
    
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="30dp"
                    android:orientation="vertical" >
    
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/username_login" />
    
                    <EditText
                        android:id="@+id/username_login"
                        android:layout_width="200dp"
                        android:layout_height="30dp"
                        android:background="@drawable/edit_text"
                        android:inputType="text"
                        android:paddingLeft="5dp"
                        android:paddingTop="2dp" />
    
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/password_login" />
                </LinearLayout>
            </LinearLayout>
        </ScrollView>
    
    </LinearLayout>
    

    【讨论】:

    • 在某些表单中,滚动视图的子节点不止我一个,它不允许我这样做,因此我必须将滚动视图作为主要父级。你有其他解决方案吗?
    • 如果您有多个孩子,请在滚动视图的第一个线性布局中输入这些孩子。