我有两个szenarios:
第一:
textView.setTextSize(getResources().getDimension(R.dimen.defaultTextSize));
Run Code Online (Sandbox Code Playgroud)
xml中的第二个:
android:textSize="@dimen/defaultTextSize"
Run Code Online (Sandbox Code Playgroud)
在values/dimen.xml中,我已经使用20sp声明了defaultTextSize
在我的第一种情况下,文本比我的第二种情况要大得多(并且在某些屏幕上不同).为什么?我做错了吗?
我正在更新我当前的应用程序以使用零食栏,在Google规范中它们显示了各种使用它们的方法http://www.google.com/design/spec/components/snackbars-toasts.html#snackbars-toasts-specs
例A:

例B:

这是我的代码atm:
Snackbar snackbar = Snackbar.make(mParentLayout, displayMessage,
Snackbar.LENGTH_LONG);
snackbar.setAction(actionMessage, mClickListener);
snackbar.show();
Run Code Online (Sandbox Code Playgroud)
我在例B中得到了结果,
我该如何添加保证金?
我有点困惑.
首先,当我创建一个工具栏并且它被状态栏重叠时,我只是添加fitSysmtemWindow="true"了父XML,它工作得很好.
但是当我创建FullScreen时DialogFragment,它也会被状态栏重叠.我试图添加fitSystemWindow="true"它不起作用.
仅出现在Android 5.0+上.没有将状态栏设置为半透明的任何地方.
这是我的DialogFragment代码
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_create_bill_dialog,container, false);
return view;
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
return dialog;
}
Run Code Online (Sandbox Code Playgroud)
谢谢.为我糟糕的Eng工作.
我有一个带文字的按钮和左边的抽屉.有没有什么方法可以在保持纵横比的同时将可绘制比例调整到合适的尺寸(填充按钮的高度)?
我的布局相关摘录:
<Button
android:text="@string/add_fav"
android:id="@+id/event_fav_button"
android:layout_width="match_parent"
android:layout_height="40dp"
android:drawableLeft="@drawable/star_yellow"/>
Run Code Online (Sandbox Code Playgroud) 我注意到当我在xml中使用elevation属性并将其设置为4dp时,我得到一个正常的阴影.当我在java中使用setElevation(4)时,我得到的阴影比xml属性少.我该如何解决这个问题?
我有一个包含多个项目的回收站视图。我需要从底部开始显示项目,即第一个项目应该显示在底部,从下到上滚动后,将显示更多项目。为此,我尝试的是,
linearlayoutManager.setStackFromEnd(true);
Run Code Online (Sandbox Code Playgroud)
这有助于从底部开始项目。但是当有多个项目时,超过同时适合屏幕的大小,那么第一个项目会随着项目数量的增加而移动到顶部。
我也试过
linearlayoutManager.scrollToPosition(0);
Run Code Online (Sandbox Code Playgroud)
这没有改变任何东西。
这是一张图片,显示了我正在寻找的东西。
上面列表中还有一些项目仍然不可见。
我已经检查了图像中此视图的视图层次结构,该图像仅显示了一个 recyclerview 及其中的项目。并且recyclerview 的高度是match_parent,即顶部空间,没有项目显示recyclerview 下面的另一个视图,这是一个谷歌地图。我只需要知道如何在不使用更多额外视图的情况下实现 recyclerview 的此功能。
任何帮助将不胜感激..!!
我有一个带有drawable的自定义搜寻栏,它工作正常,我正在尝试通过搜索栏对用户操作进行工具提示文本,有没有不用第三方库的方法,我已经发布了下面的代码,用于自定义搜寻栏
我还附上了我希望在下面实现的示例进度工具提示
任何参考或解决方案将不胜感激
implementation "com.android.support:appcompat-v7:${android_support_version}"
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progressValue, boolean fromUser) {
seekBar.setThumb(getThumb(progressValue));
TooltipCompat.setTooltipText(seekBar, String.valueOf(progressValue));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
//Do nothing
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
//Do nothing
}
});
private Drawable getThumb(int progress) {
View thumbView = LayoutInflater.from(getActivity()).inflate(R.layout.seekbar_tv, null, false);
((TextView) thumbView.findViewById(R.id.tvProgress)).setText(progress + "");
thumbView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
Bitmap bitmap = Bitmap.createBitmap(thumbView.getMeasuredWidth(), thumbView.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
thumbView.layout(0, 0, thumbView.getMeasuredWidth(), thumbView.getMeasuredHeight());
thumbView.draw(canvas);
return new BitmapDrawable(getResources(), bitmap);
}
<!--mySeekBarInLayout--> …Run Code Online (Sandbox Code Playgroud) 这很奇怪,但是在 Java 代码中设置左边距或右边距在某些设备/平台上不起作用。
这是代码。简单的xml:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff"
>
<View
android:id="@+id/myView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginLeft="0dp"
android:layout_marginTop="0dp"
android:background="#00ff00" />
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
爪哇:
@Override
public void onConfigurationChanged (Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
{
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams)findViewById(R.id.myView).getLayoutParams();
params.leftMargin = 50;
params.rightMargin = 50;
params.topMargin = 50;
params.bottomMargin = 50;
findViewById(R.id.myView).requestLayout();
}
}
Run Code Online (Sandbox Code Playgroud)
所以我在 FrameLayout 中有一个绿色的视图。在旋转时,我会更改视图的边距。(我的活动有 android:configChanges="orientation|screenSize")
结果如下:
三星 Galaxy S 3 (Android 4.1.2)(工作正常)


索尼爱立信 Xperia Arc S (Android 4.0.4)(工作奇怪!)


正如您在代码中看到的,在 Android 4.1.2 上正常工作。而在 Android 4.0.4 上没有设置左右边距,而是设置了上边距。为什么要顶?
我已经在模拟器上测试过了。所有平台 >= Android 4 …
我的字体大小是12dp.
我正在设置字体TextPaint,因为我正在使用跨度.问题是TextPaint接受的参数是浮点数.我想知道如何将12 dp转换为浮点数?