Spinner 项目的自定义布局

2024-01-10

我在警报对话框中有一个微调器。我想减少微调项目之间的填充,因此我实现了以下内容:

spinner_row.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="30dp"
    android:background="#fff" >

    <TextView
        android:id="@+id/tvCust"
        android:layout_width="200dp"
        android:layout_height="30dp"
        android:gravity="left|center_vertical"
        android:textColor="#000"
        android:textSize="15sp" />

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:layout_alignParentRight="true" />

</RelativeLayout>

活动代码包含以下内容:

spinner= (Spinner) dialog.findViewById(R.id.spinner);
String arr[] = { "1", "2", "3" };
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
CameraActivity.this, R.layout.spinner_row, R.id.tvCust,arr);
spinner.setAdapter(adapter);

现在,正如您在下面的屏幕截图中看到的,单选按钮显示在微调器上,这实际上是spinner_row.xml。请注意,textview 宽度为 200dp,而 spinner 长度仅为 130dp,因此单选按钮不应显示在 spinner 上。我怎样才能删除它?

另外,当我单击任何微调器项目时,微调器弹出窗口不会按预期消失。(请注意,微调器项目列表中所有 3 个复选框均已选中)。setOnItemSelectedListener单击项目时不会被调用。

任何帮助表示赞赏。

Edit 1

As per farrukh根据建议,我尝试了他的代码,结果如下。


我有这个

and this

用这些xml代码

名为 spinadapt.xml 的适配器的 xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="30dp"
android:background="#fff" >

<TextView
    android:id="@+id/tvCust"
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:layout_toLeftOf="@+id/radioButton1"
    android:gravity="left|center_vertical"
    android:textColor="#000"
    android:textSize="15sp" />

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:layout_alignParentRight="true" />

</RelativeLayout>

和名为activity_main.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">

<TextView
    android:id="@+id/spinner1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true" 
    android:hint="Select item"
    android:background="@drawable/spin"/>

</RelativeLayout>

java代码是名为MainActivity.java的类

public class MainActivity extends Activity
{
    Spinner sp;
    TextView tv;
    String[]  counting={"One","Two","Three","Four"};
    @Override
    protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            sp=new Spinner(this);
            tv=(TextView)findViewById(R.id.spinner1);
            tv.setOnClickListener(new OnClickListener()
                {                       
                    @Override
                    public void onClick(View v)
                        {
                            sp.performClick();
                        }
                });
            sp.setAdapter(new Adapter(MainActivity.this, counting));
            sp.setOnItemSelectedListener(new OnItemSelectedListener()
                {
                    @Override
                    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3)
                        {
                            tv.setText(counting[arg2]);
                        }
                    @Override
                    public void onNothingSelected(AdapterView<?> arg0)
                        {
                        }
                });
        }
}

和名为 Adapter.java 的适配器类

public class Adapter extends BaseAdapter
{
    LayoutInflater inflator;
    String[] mCounting;

    public Adapter( Context context ,String[] counting)
        {
            inflator = LayoutInflater.from(context);
            mCounting=counting;
        }

    @Override
    public int getCount()
        {
            return mCounting.length;
        }

    @Override
    public Object getItem(int position)
        {
            return null;
        }

    @Override
    public long getItemId(int position)
        {
            return 0;
        }

    @Override
    public View getView(int position, View convertView, ViewGroup parent)
        {
            convertView = inflator.inflate(R.layout.spinadapt, null);
            TextView tv = (TextView) convertView.findViewById(R.id.tvCust);
            tv.setText(Integer.toString(position));
            return convertView;
        }
}

这是完美的工作

希望这会有所帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spinner 项目的自定义布局 的相关文章

  • Android中如何通过ViewModel类在Activity和Fragment之间共享数据?

    我想知道是否可以传递一个在 Activity 类中声明的字符串数据 并将该字符串数据传递给 ViewModel 类 然后将数据传递给 Fragment 类 视图模型类 class TimeTableViewModel extends Vie
  • Android版本App更新代码

    我读到如果我们想更新Google Play中的应用程序 版本代码应该高于以前的apk文件 我有一个版本代码为 20 且版本名称为 1 0 的应用程序 那么要更新app 应该如何增加版本号呢 应该增加10吗 或者仅仅 1 就足够了 即版本代码
  • 如何在 M1 Mac 上运行的模拟器上运行旧版 Android 版本(例如 API 级别 21)?

    虽然现在有一个适用于 M1 mac 的 Android Studio 和支持arm架构的Android模拟器镜像 https stackoverflow com questions 64907154 android studio emula
  • Auto-value-gson出现接口错误,注册一个InstanceCreator?

    我有一个如下所示的接口类 public interface Species String name And a Human实现的类 AutoValue使用类型适配器 AutoValue public abstract class Human
  • Android:文本淡入和淡出

    我已阅读此 stackoverflow 问题和答案 并尝试实现文本淡入和淡出 Android中如何让文字淡入淡出 https stackoverflow com questions 8627211 how to make text fade
  • 如何调试“com.android.okhttp”

    在android kitkat中 URLConnection的实现已经被OkHttp取代 如何调试呢 OkHttp 位于此目录中 external okhttp android main java com squareup okhttp 当
  • 在android中从JSON生成listview

    我对 Android 完全陌生 目前正在尝试从从我的服务器中提取的 JSON 数组生成列表视图 我已经阅读了很多教程 但没有运气 有一种独特的方法可以做到这一点 请您指出一些适合开始的资源 我读过了this http www josecgo
  • RecyclerView 在聊天屏幕中的 notificationDataSetChanged 上滚动到顶部

    我正在尝试使用 recyclerView 创建消息传递类型的屏幕 该屏幕将从底部开始 并在用户到达聊天顶端时加载更多数据 但我面临着这个奇怪的问题 我的 recyclerView 在调用 notificationDataSetChanged
  • TextView 宽度匹配drawableTop 宽度

    有什么办法可以使TextView width匹配复合可绘制宽度 XML 例如对于 xml 代码
  • 如何在单个查询中搜索 RealmObject 的 RealmList 字段

    假设我有一堂课 public class Company extends RealmObject private String companyId private RealmList
  • 警报对话框中的 Webview 不显示内容

    我正在开发一个 Android 应用程序 我需要在网络视图和警报对话框上显示一个网站 该站点显示在网络视图中 但不显示在警报对话框中 到目前为止 这是我的代码 WebView WebView myWebView WebView v find
  • 表面视图+gl表面视图+框架布局

    我是 java 和 OpenGL 的新手 我正在尝试获得一个相机预览屏幕 能够 同时显示 3D 对象 浏览完样本后 api 演示 我想结合示例的代码 api 演示就足够了 但不知何故它不起作用 迫使我 启动时关闭 错误被称为空指针 例外 有
  • 如何仅从 Firestore 获取最新更新的数据?

    在 Firestore 上发现任何更改时始终获取整个文档 如何只获取最近更新的数据 这是我的数据 我需要在第一次加载时在聊天中按对象顺序 例如 2018 09 17 30 40 msg和sendby 并且如果数据更新则仅获取新的msg和se
  • Android应用主题更换流畅

    我正在开发一个提供白天和夜间主题的项目 我正在更改主题 夜间主题 AppCompatDelegate setDefaultNightMode AppCompatDelegate MODE NIGHT YES 日主题 AppCompatDel
  • 在 Xamarin 中隐藏软键盘

    如何隐藏软键盘以便在聚焦时显示Entry在 Xamarin forms 便携式表单项目中 我假设我们必须为此编写特定于平台的渲染器 但以下内容不起作用 我创建自己的条目子类 public class MyExtendedEntry Entr
  • PhoneGap 1.4 封装 Sencha Touch 2.X - 性能怎么样?

    我正在构建一个多平台平板电脑应用程序 仅使用其 Webview 使用 Phonegap 1 4 对其进行包装 然后使用 Sencha Touch 2 框架发挥我的魔力 我所说的多平台是指 iOS 5 X 和 Android 3 0 目前 到
  • react-native android fontFamily 不生效

    问题一 我在index android js的欢迎样式中添加了fontFamily 但没有效果 fontFamily 真的可以在 Android 上使用吗 欢迎 字体大小 20 fontFamily roboto thin 文本对齐 居中
  • 以编程方式向 LinearLayout 添加边框

    我该如何添加以编程方式LinearLayout 的边框 假设我们创建了这个布局 LinearLayout TitleLayout new LinearLayout getApplicationContext TitleLayout setO
  • Android:分配内存失败

    我正在尝试创建一个具有 2047 mb 内存的模拟器 当我运行它时 我收到此错误 2011 02 22 14 24 14 Emulator 2011 02 22 14 24 14 Emulator This application has
  • JetPack Compose - 卡中行中的weight() 不起作用

    创建 Android 应用程序时 我将一些可组合项放在卡片的一行中 如下所示 但它没有按我的预期工作 我添加 weight 1f 的可组合项不再显示 data class Test val title String val text Str

随机推荐