如何使微调箭头更接近所选文本?

时间:2018-10-22 07:30:59

标签: android android-layout spinner android-spinner

我知道这个问题一直在重复,但是我没有适当的解决方法。
  我想使箭头更靠近微调器(这意味着我想减小微调器的宽度并减小文本和向下箭头之间的空间),我使用了默认微调器。我怎样才能做到这一点?请指导我获得解决方案。
  这是XML代码

import { takeEvery, select, call, put } from 'redux-saga/effects';
import { LOGIN, AUTHENTICATION_RESULT, AUTHENTICATION_ERROR } from '../actions/user';

const authenticateUser = (email, password) => fetch('apiURL/oauth/token', {
  method: 'POST',
  headers: {
    Accept: 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    email: email,
    password: password,
    grant_type: "password"
  }),
});
function* fetchUser(action){
    try{
      console.log("Email", action.email)
      console.log("Password", action.password)
      const response = yield call(authenticateUser, action.email, action.password)
      const result = yield response.json();
      if (result.error) {
          yield put({ type: AUTHENTICATION_ERROR, error: result.error });
      } else {
          yield put({ type: AUTHENTICATION_RESULT, result });
      }
    }
    catch (e) {
      yield put({ type: AUTHENTICATION_ERROR, error: e.message });
    }
}
export default function* rootSaga() {
    yield takeEvery(LOGIN, fetchUser);
}

2 个答案:

答案 0 :(得分:0)

由于我了解您的问题,很多时候我们都面临着自定义微调器UI的要求,而要实现这一目标太难了。我通常在以下情况下使用此解决方案:

解决方案::隐藏实际的Spinner并显示一个TextView,它看起来像我们想要的Spinner,请查看下面的图片,以更好地理解:

enter image description here

在上图中,我创建了一个电话号码字段,我正在使用Spinner从用户那里获取国家代码。我创建了一个TextView,将文本作为国家/地区代码,并带有下箭头的drawable [right]。请检查以下XML代码以更好地理解:

enter image description here

在上图中,Spinner的宽度为0dp,因此您的Spinner将不可见。 请记住,您必须处理TextView的点击事件并为performClick()调用Spinner方法。。请参考下面的图片以获取此代码:

在您的TextView的点击事件中,请按照以下方式操作:

textViewLabelCodeRegister.id -> {
   spinnerCountriesRegister.performClick()
}

就是这样。

答案 1 :(得分:0)

使用 PopupWindow 代替 Spinner