সফ্টওয়্যার কীবোর্ড অ্যান্ড্রয়েডে পটভূমির চিত্রকে আকার দেয়


133

যখনই সফ্টওয়্যার কীবোর্ড প্রদর্শিত হবে, এটি পটভূমির চিত্রটিকে আকার দেয়। নীচের স্ক্রিনশট দেখুন:

আপনি দেখতে পাচ্ছেন, পটভূমিটি হ'ল ধীরে ধীরে সঙ্কুচিত। যে কেউ পটভূমিটির আকার পরিবর্তন করে কেন একটি আলোকপাত করতে পারে?

আমার লেআউটটি নিম্নরূপ:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/page_bg"
    android:isScrollContainer="false"
>
    <LinearLayout android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_width="fill_parent"
    >
        <EditText android:id="@+id/CatName"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:inputType="textCapSentences"
            android:lines="1"
        />
        <Button android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/save"
            android:onClick="saveCat"
        />
    </LinearLayout>
    <ImageButton
        android:id="@+id/add_totalk"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:background="@null"
        android:src="@drawable/add_small"
        android:scaleType="center"
        android:onClick="createToTalk"
        android:layout_marginTop="5dp"
    />
</LinearLayout>

উত্তর:


190

ঠিক আছে আমি এটি ব্যবহার করে ঠিক করেছি

android:windowSoftInputMode="stateVisible|adjustPan"

ফাইল ভিতরে <Activity >ট্যাগ ভিতরে প্রবেশ manifest। আমি মনে করি এটি কার্যকলাপের ভিতরে স্ক্রোলভিউ থাকার কারণে হয়েছিল।


3
সমস্যাটি হ'ল স্ক্রলিংটি হ'ল অ্যাডজাস্টপ্যান ব্যবহার করার সময়, কাজ করছে না ... (যদি আপনার কোনও স্ক্রোলভিউ থাকে) এবং বিরক্তিকর হয় ...
টেড

4
তবে স্ক্রোলভিউ এখন কাজ করছে না। এটি এড়াতে
কোনওভাবেই থ্রাই

আমার স্ক্রোল ভিউ দরকার আপনার কাছে কী স্ক্রোল ভিউ রাখার এবং পটভূমিটি সংকুচিত রাখার উপায় আছে?
রানা রণভিজয় সিং

4
এটি যথেষ্ট নয়। কমপক্ষে, যদি আপনি কোনও স্ক্রোলভিউ ব্যবহার না করেন। এখানে স্ট্যাকওভারফ্লো . com/ a/ 29750860 / 2914140 বা স্ট্যাকওভারফ্লো . com/ a/ 18191266 / 2914140 এর সমাধান আরও অনেক ভাল ।
কুলমাইন্ড

1
আপনি যদি স্বয়ংক্রিয়ভাবে কীবোর্ড প্রদর্শন করতে না চান তবে ব্যবহার করুন: অ্যান্ড্রয়েড: উইন্ডোসোফটইনপুটমড = "অ্যাডজাস্টপ্যান"
সতবিন্দর সিংহ

110

একটি চ্যাট অ্যাপ্লিকেশন, পটভূমি চিত্রের সাথে চ্যাট স্ক্রিন বিকাশের সময় আমি একই সমস্যার মুখোমুখি হয়েছি। android:windowSoftInputMode="adjustResize"নরম কীবোর্ড প্রদর্শিত হওয়ার পরে উপলব্ধ স্থানের জন্য আমার ব্যাকগ্রাউন্ড চিত্রটি চেপে ধরে নরম কীবোর্ড সামঞ্জস্য করার জন্য "অ্যাডজাস্টপ্যান" পুরো লেআউটটিকে স্থানান্তরিত করে। এই সমস্যার সমাধানটি ছিল কোনও ক্রিয়াকলাপের এক্সএমএলের অভ্যন্তরে বিন্যাসের পটভূমির পরিবর্তে উইন্ডো ব্যাকগ্রাউন্ড সেট করা। getWindow().setBackgroundDrawable()আপনার ক্রিয়াকলাপে ব্যবহার করুন ।


4
খুব ভালো! সর্বোত্তম উত্তর! অ্যাডজাস্টপ্যানের কারণে কোলেটারাল এফেক্টগুলি হয়: কীবোর্ড উপাদানগুলিকে ওভাররাইড করে তবে কোনও স্ক্রোলবার প্রদর্শিত হয় না।
সেলিনএইচসি

4
@ পারুলব বা অন্য যে কেউ এটি পড়তে ঘটবে, ততক্ষণ পটভূমির চিত্রটিতে প্রাসঙ্গিক তথ্য না থাকলে এটি দুর্দান্ত কাজ করে (এবং এর জন্য আপনাকে ধন্যবাদ)। আমি সময়ে সময়ে যে সমস্যার মুখোমুখি হই তা হ'ল আমার ব্যাকগ্রাউন্ডে লোগোর মতো কিছু থাকবে এবং উইন্ডো ব্যাকগ্রাউন্ডটি চিত্রটিতে সেট করা অ্যাকশনবারের পিছনে লোগোটিকে আড়াল করে। নির্দিষ্ট পর্দার জন্য এটি কোনও সমস্যা নয়, তবে কখনও কখনও আমার অ্যাকশনবার (কোনও গোপনীয়তা) রাখার প্রয়োজন হয় না। অ্যাকশনবারটিকে অ্যাকাউন্টে নেওয়ার জন্য উইন্ডো ব্যাকগ্রাউন্ড সেট করার সময় কোনও ধরণের প্যাডিং কীভাবে পরিচালনা করতে হবে সে সম্পর্কে কোনও ধারণা?
zgc7009

1
আমি কীভাবে এটি মোকাবেলা করতে একটি টুকরা করছি? এটি
খণ্ডগুলির

ব্যবহারকারীকে ৫৫56363৩: টুকরোগুলির জন্য কেবল getActivity ()। GetWindow ()। SetBackgroundDrawable () বা getActivity ()। GetWindow () সেটব্যাকগ্রাউন্ডড্রেবলযোগ্য রিসোর্স ()
Andrei Aulaska

আপনাকে ধন্যবাদ, এটি স্ক্রোলভিউ দিয়েও কাজ করেছে। আমি এটি নতুন অ্যাপকম্প্যাটটিতে পেয়েছি: getWindow ()। SetBackgroundDrawable (ContextCompat.getDrawable (এটি, আর।
লুকাস এডুয়ার্ডো

34

এই জাতীয় সমস্যা এড়াতে সেরা সমাধান এখানে।

পদক্ষেপ 1: একটি শৈলী তৈরি করুন

<style name="ChatBackground" parent="AppBaseTheme">
    <item name="android:windowBackground">@drawable/bg_chat</item>
</style>

পদক্ষেপ 2:AndroidManifest ফাইলে আপনার ক্রিয়াকলাপের স্টাইলটি সেট করুন

<activity
    android:name=".Chat"
    android:screenOrientation="portrait"
    android:theme="@style/ChatBackground" >

চমৎকার! সহজ সমাধান
মাটিয়াস এলোরিয়াগ

28

অ্যান্ড্রয়েডের মাধ্যমে: উইন্ডোসফটআইনপুটমোড = "অ্যাডজাস্টপ্যান" খারাপ ব্যবহারকারীর অভিজ্ঞতা দেয় কারণ সেই পুরো স্ক্রিনটি শীর্ষে চলে যায় (শীর্ষে স্থানান্তরিত) সুতরাং, নিম্নলিখিতগুলির মধ্যে অন্যতম সেরা উত্তর রয়েছে।

আমার একই সমস্যা আছে তবে এর পরে, আমি @ জিম থেকে দুর্দান্ত উত্তর পেয়েছি

ম্যানিফেস্টে

android:windowSoftInputMode="adjustResize|stateAlwaysHidden"

এক্সএমএলে

এখানে কোনও ব্যাকগ্রাউন্ড সেট করবেন না এবং আপনার ভিউ স্ক্রোলভিউয়ের নিচে রাখুন

জাভাতে

আপনাকে উইন্ডোতে ব্যাকগ্রাউন্ড সেট করতে হবে:

    getWindow().setBackgroundDrawableResource(R.drawable.bg_wood) ;

ধন্যবাদ জিমকে।


1
স্বীকৃতির জন্য ধন্যবাদ।
মণি

আমি যদি এর মধ্যে স্কেল টাইপ ব্যবহার করতে চাই তবে কী করব? কারণ খাঁজ জন্য পর্দার চিত্র প্রসারিত হয়।
নীল

14

শুধু সংযোজনের জন্য ...

আপনার যদি আপনার ক্রিয়াকলাপের একটি তালিকা ভিউ থাকে তবে আপনার এটিকে android:isScrollContainer="false"আপনার তালিকাভিউ বৈশিষ্ট্যে যুক্ত করতে হবে ...

এবং যুক্ত করতে ভুলবেন না android:windowSoftInputMode="adjustPan" আপনার ক্রিয়াকলাপে আপনার প্রকাশিত এক্সএমএল ...

আপনি ছেলেরা যদি ব্যবহার android:windowSoftInputMode="adjustUnspecified" আপনার বিন্যাসে স্ক্রোলযোগ্য দৃশ্যের করেন তবে আপনার পটভূমিটি এখনও নরম কীবোর্ডের মাধ্যমে আকার পরিবর্তন করবে ...

আপনার ব্যাকগ্রাউন্ডটিকে আকার পরিবর্তন থেকে রোধ করতে আপনি যদি "অ্যাডজাস্টপ্যান" মানটি ব্যবহার করেন তবে ভাল হবে ...


2
অ্যান্ড্রয়েড: উইন্ডোসফটআইনপুটমোড = "অ্যাডজাস্টপ্যান" কীবোর্ডের সাহায্যে পুরো ভিউ শিফট করে। সাধারণত আমাদের উপরে পর্দার একটি শিরোনাম থাকে। এই পতাকাটি ব্যবহার করে এটি দৃশ্যমান ক্ষেত্রের বাইরে চলে যাবে, যা ব্যবহারকারীর খারাপ ব্যবহার করে।
মণি

@ জিম: তাহলে সমাধান কি?

@ কোপার্নিক যখন আমি একটি আড্ডার অ্যাপ্লিকেশনটিতে কাজ করছিলাম তখন আমি অনেকদিন আগে এই সমস্যার মুখোমুখি হয়েছিলাম। শেষ পর্যন্ত আমি স্থির করে দিয়েছি যে দয়া করে আমার উত্তরটি এখানে উল্লেখ করুন: স্ট্যাকওভারফ্লো
রত্ন

7

যদি কারও adjustResizeআচরণের প্রয়োজন হয় এবং তার ImageViewপুনরায় আকার পরিবর্তন না করতে চান তবে এটি অন্য কাজ।

কেবল ImageViewভিতরে ScrollView=> RelativeLayoutরেখে দিন ScrollView.fillViewport = true

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <FrameLayout
            android:layout_width="100dp"
            android:layout_height="100dp">

            <ImageView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scaleType="fitXY"
                android:src="@drawable/gift_checked" />

        </FrameLayout>
    </RelativeLayout>
</ScrollView>

1
কোনও চিত্র ব্যতীত আপনার পটভূমিতে অন্য মতামত দেখা দেওয়ার ক্ষেত্রে এটি একটি ভাল সমাধান .... ধন্যবাদ
ডমিনিক ডি'সুজা

4

আমার অ্যাপটিতে কাজ করার সময় আমি মূল সমস্যার মুখোমুখি হয়েছি। প্রথমে, আমি সমস্যাটি সমাধান করতে @ পারুলব দ্বারা সরবরাহিত পদ্ধতিটি ব্যবহার করি। তাকে অনেক ধন্যবাদ তবে পরে আমি লক্ষ্য করেছি যে ব্যাকগ্রাউন্ড চিত্রটি অ্যাকশনবারের মাধ্যমে আংশিকভাবে লুকিয়ে রয়েছে (এবং স্থিতি বার আমি নিশ্চিত)। এই ছোট ইস্যুটি ইতিমধ্যে @ zgc7009 দ্বারা প্রস্তাবিত হয়েছে যারা দেড় বছর আগে @ পারুলব এর উত্তরের মন্তব্য করেছিলেন কিন্তু কেউ উত্তর দেয়নি।

আমি একটি উপায় খুঁজে বের করার জন্য একটি পুরো দিন পরিশ্রম করেছি এবং ভাগ্যক্রমে আমি এখন আমার সেলফোনে কমপক্ষে এই সমস্যাটি পুরোপুরি সমাধান করতে পারি।

পটভূমি চিত্রের শীর্ষে প্যাডিং যুক্ত করতে প্রথমে আমাদের আঁকাযোগ্য ফোল্ডারে একটি স্তর-তালিকা সংস্থান দরকার:

<!-- my_background.xml -->
<?xml version="1.0" encoding="utf-8"?>

<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:top="75dp">
        <bitmap android:src="@drawable/bg" />
    </item>
</layer-list>

দ্বিতীয়ত আমরা উল্লিখিত হিসাবে ব্যাকগ্রাউন্ডের জন্য এই ফাইলটি উত্স হিসাবে সেট করেছি:

getWindow().setBackgroundDrawableResource(R.drawable.my_background);

আমি নেক্সাস 5 ব্যবহার করছি আমি এক্সএমএলটিতে অ্যাকশনবারের উচ্চতা পাওয়ার একটি উপায় খুঁজে পেয়েছি তবে স্ট্যাটাসবারটি নয়, তাই শীর্ষ প্যাডিংয়ের জন্য আমাকে একটি নির্দিষ্ট উচ্চতা 75 ডিপি ব্যবহার করতে হবে। আশা করি যে কেউ এই ধাঁধাটির শেষ অংশটি খুঁজে পেতে পারেন।


3

আমি একই রকম সমস্যার মুখোমুখি হয়েছি, তবে এটি ব্যবহার adjustPanকরার মতো বলে মনে হচ্ছেandroid:isScrollContainer="false" এখনও আমার লেআউট (যা একটি LinearLayout নীচে একটি RecyclerView ছিল) সমাধান হয়নি। রিসাইক্লারভিউ ভাল ছিল, তবে প্রতিবার ভার্চুয়াল কীবোর্ড প্রদর্শিত হওয়ার সাথে সাথে লিনিয়ারলআউট পুনরায় সামঞ্জস্য করেছে।

এই আচরণটি রোধ করতে (আমি কেবল কীবোর্ডটি আমার লেআউটের উপরে দিয়ে যেতে চাই), আমি নীচের কোডটি দিয়েছিলাম:

    <activity
        android:name=".librarycartridge.MyLibraryActivity"
        android:windowSoftInputMode="adjustNothing" />

এটি ভার্চুয়াল কীবোর্ড ডেকে এলে অ্যান্ড্রয়েডকে মূলত আপনার লেআউটটি একা ছেড়ে যেতে বলে।

সম্ভাব্য বিকল্পগুলি সম্পর্কে আরও পঠন এখানে পাওয়া যাবে (বিস্ময়করভাবে যদিও এটি মনে হয় না যে এন্ট্রি আছে adjustNothing)।


3

সমস্ত উপলব্ধ উত্তর অধ্যয়ন এবং প্রয়োগ করার পরে, আমি এখানে একটি সমাধান যুক্ত করছি।

এই উত্তরটি কোডের সংমিশ্রণ থেকে:

https://stackoverflow.com/a/45620231/1164529

https://stackoverflow.com/a/27702210/1164529

এখানে এমন কাস্টম AppCompatImageViewশ্রেণি রয়েছে যা কোনও প্রসারিত বা স্ক্রোলিং আর্ট সফট কীবোর্ড দেখায় না: -

public class TopCropImageView extends AppCompatImageView {

    public TopCropImageView(Context context) {
        super(context);
        setScaleType(ImageView.ScaleType.MATRIX);
    }

    public TopCropImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
        setScaleType(ImageView.ScaleType.MATRIX);
    }

    public TopCropImageView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        setScaleType(ImageView.ScaleType.MATRIX);
    }

    @Override
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
        super.onLayout(changed, left, top, right, bottom);
        computeMatrix();
    }

    @Override
    protected boolean setFrame(int l, int t, int r, int b) {
        computeMatrix();
        return super.setFrame(l, t, r, b);
    }


    private void computeMatrix() {
        if (getDrawable() == null) return;
        Matrix matrix = getImageMatrix();
        float scaleFactor = getWidth() / (float) getDrawable().getIntrinsicWidth();
        matrix.setScale(scaleFactor, scaleFactor, 0, 0);
        setImageMatrix(matrix);
    }
}

আমার Fragmentশ্রেণীর ব্যাকগ্রাউন্ড হিসাবে এটি ব্যবহার করতে , আমি এটিকে প্রথম উপাদান হিসাবে সেট করেছি FrameLayout

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <complete.package.TopCropImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@mipmap/my_app_background" />

    <!-- Enter other UI elements here to overlay them on the background image -->

<FrameLayout>

2

অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল ফাইলটিতে এই লাইনটি যুক্ত করুন:

android:windowSoftInputMode=adjustUnspecified

পড়ুন এই লিঙ্কে আরও তথ্যের জন্য।


আমি এটি করার পরেও এটি এখনও ঘটছে। এটি হতাশাব্যঞ্জক হয়ে উঠছে :(
আন্দ্রেয়াস ওয়াং

1

আপনার কোডটিতে কেবল ব্যবহার করুন onCreate():

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

এবং আপনার এক্সএমএলে এই লাইনটি মুছে ফেলুন:

android:background="@drawable/background"

আরও পড়ুন এখানে:

http://developer.android.com/reference/android/view/Window.html

ধন্যবাদ: অ্যাড্রিয়ান সিড আলমাগুয়ার


1

আমি এই সমস্যার মুখোমুখি হয়েছিলাম, যখন আমার ব্যাকগ্রাউন্ড চিত্রটি কেবলমাত্র একটি ImageViewঅভ্যন্তরে Fragmentছিল এবং এটি কীবোর্ড দ্বারা পুনরায় আকার দেওয়া হয়েছিল।

আমার সমাধানটি ছিল: ImageViewথেকে কাস্টম ব্যবহার করা সামঞ্জস্য করার জন্য সম্পাদিত এই এসও উত্তর করা androidx

import android.content.Context;
import android.graphics.Matrix;
import android.util.AttributeSet;
import androidx.appcompat.widget.AppCompatImageView;

/**
 * Created by chris on 7/27/16.
 */
public class TopCropImageView extends AppCompatImageView {

    public TopCropImageView(Context context) {
        super(context);
        setScaleType(ScaleType.MATRIX);
    }

    public TopCropImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
        setScaleType(ScaleType.MATRIX);
    }

    public TopCropImageView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        setScaleType(ScaleType.MATRIX);
    }

    @Override
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
        super.onLayout(changed, left, top, right, bottom);
        recomputeImgMatrix();
    }

    @Override
    protected boolean setFrame(int l, int t, int r, int b) {
        recomputeImgMatrix();
        return super.setFrame(l, t, r, b);
    }

    private void recomputeImgMatrix() {
        if (getDrawable() == null) return;

        final Matrix matrix = getImageMatrix();

        float scale;
        final int viewWidth = getWidth() - getPaddingLeft() - getPaddingRight();
        final int viewHeight = getHeight() - getPaddingTop() - getPaddingBottom();
        final int drawableWidth = getDrawable().getIntrinsicWidth();
        final int drawableHeight = getDrawable().getIntrinsicHeight();

        if (drawableWidth * viewHeight > drawableHeight * viewWidth) {
            scale = (float) viewHeight / (float) drawableHeight;
        } else {
            scale = (float) viewWidth / (float) drawableWidth;
        }

        matrix.setScale(scale, scale);
        setImageMatrix(matrix);
    }

}

এটি উপরের কোড দিয়ে আর প্রসারিত হয় না তবে এটি এখনও একটু উপরে / ডাউন আর্ট সফ্ট কীবোর্ডে স্ক্রোল করে।
হরপ্রীত


0

আমি এর আগেও এই একই সমস্যার মুখোমুখি হয়েছিলাম তবে এত দিন আমার জন্য কোনও সমাধান কার্যকর হয়নি কারণ আমি একটি ব্যবহার করছিলাম Fragmentএবং এটিও getActivity().getWindow().setBackgroundDrawable() আমার সমাধান ছিল না।

যে সমাধানটি আমার পক্ষে কাজ করেছিল তা হ'ল FrameLayoutযুক্তি দিয়ে ওভাররাইড করা যা কীবোর্ড হ্যান্ডেল করা যায় যা উপস্থিত হতে পারে এবং বিটম্যাপটি যেতে যেতে পারে।

এখানে আমার ফ্রেমলআউট কোড (কোটলিন):

class FlexibleFrameLayout : FrameLayout {

    var backgroundImage: Drawable? = null
        set(bitmap) {
            field = bitmap
            invalidate()
        }
    private var keyboardHeight: Int = 0
    private var isKbOpen = false

    private var actualHeight = 0

    constructor(context: Context) : super(context) {
        init()
    }

    constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet) {
        init()
    }

    fun init() {
        setWillNotDraw(false)
    }

    override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec)
        val height = MeasureSpec.getSize(heightMeasureSpec)
        if (actualHeight == 0) {
            actualHeight = height
            return
        }
        //kb detected
        if (actualHeight - height > 100 && keyboardHeight == 0) {
            keyboardHeight = actualHeight - height
            isKbOpen = true
        }
        if (actualHeight - height < 50 && keyboardHeight != 0) {
            isKbOpen = false
        }
        if (height != actualHeight) {
            invalidate()
        }
    }

    override fun onDraw(canvas: Canvas) {
        if (backgroundImage != null) {
            if (backgroundImage is ColorDrawable) {
                backgroundImage!!.setBounds(0, 0, measuredWidth, measuredHeight)
                backgroundImage!!.draw(canvas)
            } else if (backgroundImage is BitmapDrawable) {
                val scale = measuredWidth.toFloat() / backgroundImage!!.intrinsicWidth.toFloat()
                val width = Math.ceil((backgroundImage!!.intrinsicWidth * scale).toDouble()).toInt()
                val height = Math.ceil((backgroundImage!!.intrinsicHeight * scale).toDouble()).toInt()
                val kb = if (isKbOpen) keyboardHeight else 0
                backgroundImage!!.setBounds(0, 0, width, height)
                backgroundImage!!.draw(canvas)
            }
        } else {
            super.onDraw(canvas)
        }
    }
}

এবং আমি এটি একটি সাধারণ ফ্রেমলআউটের পটভূমির মতো ব্যবহার করেছি।

frameLayout.backgroundImage = Drawable.createFromPath(path)

আশা করি এটা সাহায্য করবে.


0

আপনি ফ্রেমলআউটে আপনার লিনিয়ারলআউটটি মোড়ানো করতে পারেন এবং পটভূমির সাথে চিত্রকল্পটি যুক্ত করতে পারেন:

<FrameLayout>

  <ImageView 
    android:background="@drawable/page_bg"
    android:id="@+id/backgroundImage" />

  <LinearLayout>
    ....
  </LinearLayout>
</FrameLayout>

এবং আপনি কার্যকলাপ / খণ্ড তৈরি করার সময় আপনি এটি উচ্চতা সেট করতে পারেন (কীবোর্ড খোলার সময় স্কেলিং থেকে রোধ করতে)। টুকরা থেকে কোটলিনে কিছু কোড:

activity?.window?.decorView?.height?.let {
        backgroundImage.setHeight(it)
}

0

যদি আপনি চিত্রটি উইন্ডোব্যাকগ্রাউন্ড হিসাবে সেট করেন এবং ইউআই আটকে যাচ্ছে। তারপরে আপনি অঙ্কনযোগ্য ব্যবহারের সম্ভাবনা থাকতে পারে যা একক অঙ্কনযোগ্য ফোল্ডারে রয়েছে, যদি হ্যাঁ তবে আপনি এটি আঁকতে-নোডপি বা অঙ্কনযোগ্য-এক্সএক্সএক্সএক্সএক্সপিপিতে পেস্ট করতে হবে।


0

আমার সমাধানটি হ'ল উইন্ডোটির পটভূমিটিকে একটি বিন্যাসের সাথে বিকল্প স্থাপন করা, তারপরে বিন্যাসের ব্যাকগ্রাউন্ডটি নালায় সেট করুন। এইভাবে আমি ছবিটি এক্সএমএল পূর্বরূপ উইন্ডোতে রাখি:

সুতরাং লেআউটে পটভূমি রাখুন এবং এর জন্য একটি আইডি যুক্ত করুন। তারপরে ক্রিয়েট কার্যকলাপে () এই কোডটি রাখুন:

    ConstraintLayout mainLayout = (ConstraintLayout)findViewById(R.id.mainLayout);
    getWindow().setBackgroundDrawable(mainLayout.getBackground());
    mainLayout.setBackground(null);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.