tab就像fileexploler一样

Vis*_*tel 8 user-interface tabs android

我怎样才能在上面放置这样的标签..

当我点击上面显示的项目时,我想要这种类型的标签,任何人都可以提供片段或链接..请告诉我们如何可用的简介...如图所示红色矩形是否有任何Android工具或图书馆....或直接我可以通过代码?

提前致谢

矩形描述我想要的东西

belove是形象

在此输入图像描述

..

Boj*_*man 3

我为你做了一个简单的项目。你应该让它变得更漂亮,因为我没有关注这一点,只关注代码。

首先将这些值添加到您的color.xml中

<resources>
    <color name="buttonGrey">#7A7A7A</color>
    <color name="layoutHolderStartColor">#F7F7F7</color>
    <color name="layoutHolderEndColor">#E1E1E1</color>
</resources>
Run Code Online (Sandbox Code Playgroud)

接下来为按钮支架创建一些背景并将其命名为gradient_button_holder.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient 
        android:startColor="@color/layoutHolderStartColor" 
        android:endColor="@color/layoutHolderEndColor"
        android:angle="270"
     />
    <corners android:radius="3dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)

现在创建activity_main.xml

注意:我正在使用一些图像,请在底部下载整个项目并将它们取出

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

    <RelativeLayout
        android:id="@+id/pathHolder"
        android:layout_width="match_parent"
        android:layout_height="35dp"
        android:layout_alignParentTop="true"
        android:background="@drawable/gradient_button_holder"
        android:gravity="center_vertical">

        <Button
            android:id="@+id/btnAdd"
            android:layout_width="29dp"
            android:layout_height="29dp"
            android:layout_alignParentRight="true"
            android:layout_marginBottom="3dp"
            android:layout_marginLeft="3dp"
            android:layout_marginRight="3dp"
            android:layout_marginTop="3dp"
            android:background="@color/buttonGrey"
            android:gravity="center"
            android:onClick="onBtnAdd"
            android:text="+"
            android:textSize="15sp"/>

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@string/app_name"
            android:src="@drawable/seperator"
            android:visibility="gone"/>

        <HorizontalScrollView
            android:id="@+id/btnScrollView"
            android:layout_width="wrap_content"
            android:layout_height="35dp"
            android:layout_alignParentLeft="true"
            android:layout_toLeftOf="@id/btnAdd">

            <LinearLayout
                android:id="@+id/btnFolderHolder"
                android:layout_width="wrap_content"
                android:layout_height="35dp"
                android:orientation="horizontal">
            </LinearLayout>
        </HorizontalScrollView>
    </RelativeLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

接下来创建Utils

import android.annotation.SuppressLint;
import android.os.Build;
import android.view.View;

import java.util.concurrent.atomic.AtomicInteger;


public class Utils {

    private static final AtomicInteger sNextGeneratedId = new AtomicInteger(1);

    /**
     * Generate a value suitable for use in setId(int}.
     * This value will not collide with ID values generated at build time by aapt for R.id.
     *
     * @return a generated ID value
     */
    private static int generateViewId() {
        for (; ; ) {
            final int result = sNextGeneratedId.get();
            // aapt-generated IDs have the high byte nonzero; clamp to the range under that.
            int newValue = result + 1;
            if (newValue > 0x00FFFFFF) {
                newValue = 1; // Roll over to 1, not 0.
            }
            if (sNextGeneratedId.compareAndSet(result, newValue)) {
                return result;
            }
        }
    }

    @SuppressLint("NewApi")
    public static int generateId() {
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {

            return generateViewId();
        }
        else {

            return View.generateViewId();
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

最后是 MainActivity

import android.graphics.Color;
import android.os.Environment;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.widget.Button;
import android.widget.HorizontalScrollView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;

import java.io.File;


public class MainActivity extends ActionBarActivity {

    private LinearLayout btnHolder;
    private HorizontalScrollView scroller; //parent folders
    private ViewTreeObserver observer; //needed for the scroll to the end
    private Toast toast;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
        makeButtons(Environment.getExternalStorageDirectory().getPath(), "Folder1", "Folder2", "Folder3");
    }


    private void makeButtons(String... values) {
        StringBuilder sb = new StringBuilder(values.length * 2);
        for (int i = 0; i < values.length - 1; ++i) {
            sb.append(values[i]);
            sb.append(File.separator);
            addButton(values[i], sb.toString(), true);
        }
        sb.append(values[values.length - 1]);
        addButton(values[values.length - 1], sb.toString(), false);
    }


    private void init() {
        setWidgetConnections();
        observer = scroller.getViewTreeObserver();
        observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

            public void onGlobalLayout() {
                // this will always scroll to the last folder (displayed on the
                // right)
                scroller.fullScroll(HorizontalScrollView.FOCUS_RIGHT);
            }
        });
    }

    private void setWidgetConnections() {
        btnHolder = (LinearLayout) findViewById(R.id.btnFolderHolder);
        scroller = (HorizontalScrollView) findViewById(R.id.btnScrollView);
    }

    public void onBtnAdd(View v) {

    }

    private void addButton(final String text, final String path, boolean withImage) {
        // Dynamic call to add buttons
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        Button btn = new Button(this);
        btn.setId(Utils.generateId());
        btn.setText(text);
        btn.setTextColor(Color.BLACK);
        btn.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 12);
        btn.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                goToPath(path);
            }
        });

        //btn.setBackgroundResource(R.drawable.gradient_button_holder);
        btnHolder.addView(btn, params);
        if (withImage) {
            ImageView view = new ImageView(this);
            view.setBackgroundResource(R.drawable.seperator2);
            btnHolder.addView(view, params);
        }



    }

    private void goToPath(String path) {
        showToast(path);
    }

    private void showToast(String text) {
        if (toast != null) {
            toast.cancel();
        }

        toast = Toast.makeText(this, text, Toast.LENGTH_SHORT);
        toast.show();
    }


}
Run Code Online (Sandbox Code Playgroud)

这是最终结果,还要注意它是水平滚动的

在此输入图像描述

您可以在这里下载整个项目