我需要创建一个带有堆叠条形的图表,并且这些条形需要四舍五入。到目前为止,我已经成功地使条形变圆,但如果它们没有堆叠。如果堆叠,那么每个条都是圆形的,这是我不需要的。无论是否堆叠,我都需要将条形变圆。
我已经制作了我的自定义渲染器并覆盖了该drawDataSet方法,但是无论堆栈如何,我都无法弄清楚如何将顶部和底部四舍五入。
@Override
protected void drawDataSet(Canvas c, IBarDataSet dataSet, int index) {
Transformer trans = mChart.getTransformer(dataSet.getAxisDependency());
mShadowPaint.setColor(dataSet.getBarShadowColor());
float phaseX = mAnimator.getPhaseX();
float phaseY = mAnimator.getPhaseY();
// initialize the buffer
BarBuffer buffer = mBarBuffers[index];
buffer.setPhases(phaseX, phaseY);
buffer.setDataSet(index);
buffer.setBarWidth(mChart.getBarData().getBarWidth());
buffer.setInverted(mChart.isInverted(dataSet.getAxisDependency()));
buffer.feed(dataSet);
trans.pointValuesToPixel(buffer.buffer);
// if multiple colors
if (dataSet.getColors().size() > 1) {
for (int j = 0; j < buffer.size(); j += 4) {
if (!mViewPortHandler.isInBoundsLeft(buffer.buffer[j + 2]))
continue;
if (!mViewPortHandler.isInBoundsRight(buffer.buffer[j]))
break;
if (mChart.isDrawBarShadowEnabled()) {
if (mRadius > 0) …Run Code Online (Sandbox Code Playgroud) 这是body呼叫的外观(将添加图像字段)。
{
"email":"test",
"username":"test",
"password":"test",
"name":"test",
"description":"Something...",
"OAuthCredentialsTest":{
"client_id":23,
"client_secret":"test"
}
}
我使用@PartMap作为body我的电话:
Call<CreateUserResult> createUserPart(@PartMap Map<String, RequestBody> map);
Run Code Online (Sandbox Code Playgroud)
然后当我enqueue打电话时:
File file = new File(signUpUser.getImagePath());
RequestBody fileBody = RequestBody.create(MediaType.parse("image/*"), file);
RequestBody fullName = RequestBody.create(MediaType.parse("text/plain"), signUpUser.getFullName());
RequestBody email = RequestBody.create(MediaType.parse("text/plain"), signUpUser.getEmail());
RequestBody username = RequestBody.create(MediaType.parse("text/plain"), signUpUser.getUsername());
RequestBody password = RequestBody.create(MediaType.parse("text/plain"), signUpUser.getPassword());
RequestBody desc = RequestBody.create(MediaType.parse("text/plain"), signUpUser.getDescription());
Map<String, RequestBody> myMap = new HashMap<>();
myMap.put("file\"; filename=\"" + file.getName(), fileBody);
myMap.put("name", fullName);
myMap.put("email", email);
myMap.put("username", username);
myMap.put("password", …Run Code Online (Sandbox Code Playgroud) 我决定DiffUtil尝试一下,而不是notifyDataSetChanged在我的EndlessRecyclerView.
问题是,在第一次或第二次投掷后,我list被滚动到顶部,但项目被添加到列表中。
这是我的DiffUtil:
public class MovieDiffCallback extends DiffUtil.Callback {
List<Movie> mOldMovieList;
List<Movie> mNewMovieList;
public MovieDiffCallback(List<Movie> oldMovieList, List<Movie> newMovieList) {
this.mOldMovieList = oldMovieList;
this.mNewMovieList = newMovieList;
}
@Override
public int getOldListSize() {
return mOldMovieList != null ? mOldMovieList.size() : 0;
}
@Override
public int getNewListSize() {
return mNewMovieList != null ? mNewMovieList.size() : 0;
}
@Override
public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
return mOldMovieList.get(oldItemPosition).getId().equals(mNewMovieList.get(newItemPosition).getId());
}
@Override
public boolean areContentsTheSame(int oldItemPosition, …Run Code Online (Sandbox Code Playgroud) 我想在我的导航抽屉中添加微调器作为项目.我应该把旋转器放在哪里?旋转器的布局在哪里膨胀?在哪里初始化微调器?我希望它看起来像这样:

这是我添加项目的地方:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group
android:id="@+id/group1"
android:checkableBehavior="single">
<item
android:id="@+id/nav_login"
android:icon="@drawable/ic_login"
android:title="@string/login_menu_item"/>
<item
android:id="@+id/nav_signup"
android:icon="@drawable/ic_signup"
android:title="@string/signup_menu_item"/>
</group>
<item android:title="@string/language">
<menu>
<item
android:id="@+id/nav_eng"
android:title="@string/english">
</item>
<item
android:id="@+id/nav_heb"
android:title="@string/hebrew">
</item>
</menu>
Run Code Online (Sandbox Code Playgroud)
这是我的抽屉布局:
<LinearLayout 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"
android:fitsSystemWindows="true"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar_home"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
app:title="Masü"
/>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:openDrawer="start">
<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
/>
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:itemIconTint="@color/colorAccent"
app:itemTextColor="@color/textColorSecondary"
app:menu="@menu/activity_home_drawer"/>
</android.support.v4.widget.DrawerLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
点击一个项目,这就是它的工作原理:
public boolean onNavigationItemSelected(MenuItem item) {
int id = item.getItemId(); …Run Code Online (Sandbox Code Playgroud) 我已经尝试过全面搜索,但我似乎无法想出这个.基本上,我有一个Scrollview的布局和里面的元素.我想在滚动视图中放置一个按钮,它位于末尾/底部,只有当你一直滚动到底部时才能看到它.我试过这样做:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/topcontainer">
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar_review"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
app:title="Review Your Massage">
</android.support.v7.widget.Toolbar>
<include layout="@layout/card_review"/>
</LinearLayout>
<Button
android:id="@+id/buttonReview"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_alignParentBottom="true"
android:background="@color/colorAccent"
android:text="@string/book"
android:layout_below="@+id/topcontainer"
/>
</RelativeLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
按钮确实位于底部,但下方有空间.如果我在分辨率更高的手机上运行应用程序,按钮将几乎位于屏幕中间.我怎么能这样做,无论它的分辨率如何始终保持在最低点?