অ্যান্ড্রয়েড সরঞ্জামদণ্ডে একটি বোতাম তৈরি করা হচ্ছে


103

Toolbarএই iOSউদাহরণটির মতো দেখতে আমি কীভাবে অ্যান্ড্রয়েডের অভ্যন্তরে একটি বোতাম তৈরি করতে পারি ?

আইওএস উদাহরণ

উত্তর:


251

বোতাম টিউটোরিয়াল সহ টুলবার

1 - ভিতরে লাইব্রেরি সামঞ্জস্য যোগ করুন build.gradle

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
}

2 - রঙগুলি color.xmlসংজ্ঞায়িত করতে একটি ফাইলের নাম তৈরি করুনToolbar

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="ColorPrimary">#FF5722</color>
    <color name="ColorPrimaryDark">#E64A19</color>
</resources>

3 - আপনার style.xmlফাইলটি পরিবর্তন করুন

<resources>     
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

        <item name="colorPrimary">@color/ColorPrimary</item>
        <item name="colorPrimaryDark">@color/ColorPrimaryDark</item>
        <!-- Customize your theme here. -->
    </style>     
</resources>

4 - একটি এক্সএমএল ফাইল তৈরি করুন tool_bar.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
 xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimary"
    android:elevation="4dp" />

5 - Toolbarআপনার মধ্যে অন্তর্ভুক্তmain_activity.xml

<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">

    <include
        android:id="@+id/tool_bar"
        layout="@layout/tool_bar" />

    <TextView
        android:layout_below="@+id/tool_bar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/TextDimTop"
        android:text="@string/hello_world" />

</RelativeLayout>

6 - তারপরে, এটি আপনার MainActivityশ্রেণীর ভিতরে রাখুন

package com.example.hp1.materialtoolbar;

import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;

/* When using AppCompat support library                                                             
 * (you need to extend Main Activity to                                                            
 * ActionBarActivity)
 * ActionBarActivity has deprecated, use AppCompatActivity
 */
public class MainActivity extends ActionBarActivity { 
    // Declaring the Toolbar Object
    private Toolbar toolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);

        // Attaching the layout to the toolbar object
        toolbar = (Toolbar) findViewById(R.id.tool_bar);
        // Setting toolbar as the ActionBar with setSupportActionBar() call
        setSupportActionBar(toolbar);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

7 - এবং পরিশেষে, আপনার "বাটনে চলছে" যোগ menu_main.xmlভেতরে /res/menu/ডিরেক্টরি

<?xml version="1.0" encoding="utf-8"?>
   <menu
        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"
        tools:context=".MainActivity">
        <item
            android:id="@+id/action_settings"
            android:orderInCategory="100"
            android:title="@string/action_settings"
            app:showAsAction="never" />
        <item
            android:id="@+id/action_search"
            android:orderInCategory="200"
            android:title="Search"
            android:icon="@drawable/ic_search"
            app:showAsAction="ifRoom"/>                
        <item
            android:id="@+id/action_user"
            android:orderInCategory="300"
            android:title="User"
            android:icon="@drawable/ic_user"
            app:showAsAction="ifRoom" />        
    </menu>

41
+1 ধাপে ধাপে, গুগল ডক্সের চেয়ে ভাল। একটি জিনিস অনুপস্থিত তা হ'ল মেনু_মাইন.এক্সএমএলটি অবশ্যই / রেজো / মেনু / ডিরেক্টরিতে তৈরি করতে হবে এবং মেনু_মাইন.এক্সএমএলে একটি "<মেনু" রয়েছে।
এডুয়ার্ডো

3
চমৎকার গাইড, তবে এটি পাঠ্যটি দেখায় না, এটি প্রশ্নের "অংশটি" এর মতো দেখতে "এর উত্তরটি হারিয়েছে। আমি সম্মত হলাম অ্যান্ড্রয়েড স্টাইলটি অনুসরণ করা আরও ভাল তবে আমি মনে করি এটিই প্রশ্নের শক্ত অংশ।
TWiStErRob

1
দেখে মনে হচ্ছে সর্বশেষতম ADKs অ্যাকশনবার্যাকটিভিটি অবহেলা করেছে এবং এখন আপনি অ্যাপকম্প্যাটঅ্যাক্টিভিটি ব্যবহার করতে চান তাই এটি আমার পক্ষে কার্যকর হয় না।
ফিজ্ক

3
@ টারডোঅন্ড্রে প্রশ্নটি "অ্যান্ড্রয়েড সরঞ্জামদণ্ডে বোতাম তৈরি করা", তবে আপনি itemটুলবারে যুক্ত করছেন ... বাটন এবং আইটেমের মধ্যে পার্থক্য রয়েছে: পি
অমিত উপাধ্যায়

1
প্রযুক্তিগতভাবে @ অমিতউপাধ্যায় ঠিক বলেছেন is মেনু আইটেমগুলি বোতাম হিসাবে স্ফীত হয় না এবং অ্যাক্সেসিবিলিটি ঘোষণাটি "সংরক্ষণ করুন, সক্রিয় করতে ডাবল-আলতো চাপুন" এর পরিবর্তে "সংরক্ষণ করুন, বোতামটি চাপুন, ডাবল-আলতো চাপুন" (যদি ক্রিয়াটি "সংরক্ষণ করুন")
আরডিএস

97

সরঞ্জামদণ্ড কাস্টমাইজেশন নিম্নলিখিত উপায় দ্বারা করা যেতে পারে

নীচে দেখানো মত টুলবারের ভিতরে বোতাম এবং পাঠ্য ভিউ কোড লিখুন

<android.support.v7.widget.Toolbar
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/app_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    >

    <Button
      android:layout_width="wrap_content"
        android:layout_height="@dimen/btn_height_small"
        android:text="Departure"
        android:layout_gravity="right"
        />
</android.support.v7.widget.Toolbar>

নীচের মত আইটেম মেনু ব্যবহার করা অন্য উপায়

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

1
layout_gravityগুণটি উপলভ্য নয়
pkuszewski

1
আপনি বোতামটি মোড়তে পারেন RelativeLayout(প্রস্থটি সেট করুন match_parent) এবং প্রয়োগ করতে পারেন layout_alignParentEnd="true"
জিল শাহ

1
@ জিলশাহ যদি আপনি প্রস্থটি সেট করেন match_parentতবে এটি সরঞ্জামদণ্ড থেকে শিরোনাম সরিয়ে দেয়।
ডেভিড হুইটম্যান

14

অন্য সম্ভাবনাটি হ'ল app:actionViewClassআপনার মেনুতে বৈশিষ্ট্যটি সেট করা :

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">
  <item
     android:id="@+id/get_item"
     android:orderInCategory="1"
     android:text="Get"
     app:showAsAction="always" 
     app:actionViewClass="android.support.v7.widget.AppCompatButton"/>
</menu>

আপনার কোডে আপনি এই বোতামটি অ্যাক্সেস করতে পারেন মেনু স্ফীত হওয়ার পরে:

public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater menuInflater = getMenuInflater();
    menuInflater.inflate(R.menu.sample, menu);

    MenuItem getItem = menu.findItem(R.id.get_item);
    if (getItem != null) {
        AppCompatButton button = (AppCompatButton) getItem.getActionView();
        //Set a ClickListener, the text, 
        //the background color or something like that
    }

    return super.onCreateOptionsMenu(menu);
}

1
এটি সেরা সমাধান আইএমও, এর জন্য চারদিকে কমপক্ষে কম্পনের প্রয়োজন।
জুলিয়াস নিউমান্ন

সর্বকালের সেরা সমাধানটি খুঁজে পেয়েছে ... অ্যান্ড্রয়েড.উইজেট ব্যবহার করুন.অ্যান্ড্রয়েডএক্সের জন্য বাটন
মাহবুবুর রহমান খান

11

আমি টুলবারে পাঠ্য যুক্ত করেছি:

menu_skip.xml

<menu 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"
    tools:context=".MainActivity">

    <item
        android:id="@+id/action_settings"
        android:title="@string/text_skip"
        app:showAsAction="never" />
</menu>

MainActivity.java

@Override
boolean onCreateOptionsMenu(Menu menu) {
    inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_otp_skip, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        // action with ID action_refresh was selected
        case R.id.menu_item_skip:
            Toast.makeText(this, "Skip selected", Toast.LENGTH_SHORT)
                    .show();
            break;
        default:
            break;
    }
    return true;
}

9

এগুলিকে টুলবার / অ্যাকশনবারে মেনু আইটেম বা অ্যাকশন বোতাম বলা হয়। এখানে আপনার গুগল টিউটোরিয়াল রয়েছে যে এটি কীভাবে কাজ করে এবং কীভাবে তাদের যুক্ত করতে হয় https://developer.android.com/training/basics/actionbar/adding-buttons.html


5

আপনি আসলে কোনও সরঞ্জামদণ্ডের ভিতরে যে কোনও কিছু রাখতে পারেন। নীচের কোডটি দেখুন।

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:background="@color/colorPrimary">

</android.support.v7.widget.Toolbar>

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

উত্স: অ্যান্ড্রয়েড টুলবার উদাহরণ


3

আপনি actionLayoutসমর্থন লাইব্রেরি থেকে ব্যবহার করতে পারেন ।

menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<item
    android:id="@+id/button_item"
    android:title=""
    app:actionLayout="@layout/button_layout"
    app:showAsAction="always"
    />
</menu>

button_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="horizontal">

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    />

</RelativeLayout>

Activity.java

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu, menu);
    MenuItem item = menu.findItem(R.id.button_item);
    Button btn = item.getActionView().findViewById(R.id.button);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(MainActivity.this, "Toolbar Button Clicked!", Toast.LENGTH_SHORT).show();
        }
    });
    return true;
}

সুন্দর এবং সংক্ষিপ্ত
সুডিক্স

1

আমি যে অর্জন করা মোড়কে পেরেছিলেন Buttonসঙ্গে ConstraintLayout:

<androidx.coordinatorlayout.widget.CoordinatorLayout 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">

    <com.google.android.material.appbar.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:elevation="0dp">

        <androidx.appcompat.widget.Toolbar
            android:id="@+id/top_toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/white_color">

            <androidx.constraintlayout.widget.ConstraintLayout
                android:layout_width="match_parent"
                android:layout_marginTop="10dp"
                android:layout_height="wrap_content">

                <TextView
                    android:id="@+id/cancel"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/cancel"
                    android:layout_marginStart="5dp"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintLeft_toLeftOf="parent"
                    app:layout_constraintTop_toTopOf="parent" />

                <Button
                    android:id="@+id/btn_publish"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/publish"
                    android:background="@drawable/button_publish_rounded"
                    app:layout_constraintTop_toTopOf="parent"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintEnd_toEndOf="parent"
                    android:layout_marginEnd="10dp"
                    app:layout_constraintLeft_toRightOf="@id/cancel"
                    tools:layout_editor_absoluteY="0dp" />

            </androidx.constraintlayout.widget.ConstraintLayout>

        </androidx.appcompat.widget.Toolbar>

    </com.google.android.material.appbar.AppBarLayout>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

আপনি একটি অঙ্কনযোগ্য সংস্থান তৈরি করতে পারেন button_publish_rounded, বোতামের বৈশিষ্ট্যগুলি সংজ্ঞায়িত করতে এবং এই ফাইলটিকে বোতামের সম্পত্তিতে বরাদ্দ করতে পারেন android:background:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/green" />
    <corners android:radius="100dp" />
</shape>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.