【发布时间】:2020-05-21 02:30:27
【问题描述】:
我正在尝试将按钮单击时可绘制的色调颜色更改为我想要的颜色,单击时无法更改请帮助 我希望它是按钮而不是 ImageButton。
我将在下面发布代码 我正在使用选项卡布局,其中两个选项卡是单向的并返回片段。 我遇到了 onewayfragment 中的问题。从(经济、商务和头等舱)中选择类型时,我需要当我在经济按钮上选择时,经济按钮中的可绘制对象应更改为我想要的颜色。
1) 主页
2) 家庭适配器
3) 单向片段
4) 返回片段
下面是我用过的文件的编码
HomePage.java
package com.example.gomerry.Home_Page;
import android.app.DatePickerDialog;
import android.os.Bundle;
import android.widget.Adapter;
import android.widget.TextView;
import androidx.viewpager.widget.ViewPager;
import com.example.gomerry.Menu;
import com.example.gomerry.R;
import com.google.android.material.tabs.TabLayout;
public class HomePage extends Menu {
TextView date;
TextView month;
TextView dayofWeek,day;
DatePickerDialog datePickerDialog1;
DatePickerDialog datePickerDialog2;
Adapter adapter;
TabLayout tabLayout;
ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home_page);
tabLayout=(TabLayout)findViewById(R.id.tabLayout);
viewPager=(ViewPager)findViewById(R.id.viewPager);
tabLayout.addTab(tabLayout.newTab().setText("One Way"));
tabLayout.addTab(tabLayout.newTab().setText("Return"));
// tabLayout.addTab(tabLayout.newTab().setText("Movie"));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
final HomeAdapter adapter = new HomeAdapter(this,getSupportFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
}//end of code
这是 HomeAdapter.java
package com.example.gomerry.Home_Page;
import android.content.Context;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import com.example.gomerry.CancelBooking.CancellationFragment;
import com.example.gomerry.CancelBooking.ChargesFragment;
public class HomeAdapter extends FragmentPagerAdapter {
private Context myContext;
int totalTabs;
public HomeAdapter(Context context, FragmentManager fm, int totalTabs) {
super(fm);
myContext = context;
this.totalTabs = totalTabs;
}
// this is for fragment tabs
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
OneWayFragment oneWayFragment = new OneWayFragment();
return oneWayFragment;
case 1:
ReturnFragment returnFragment = new ReturnFragment();
return returnFragment;
default:
return null;
}
}
// this counts total number of tabs
@Override
public int getCount() {
return totalTabs;
}
}//end of code
这是 OneWayFragment.java
package com.example.gomerry.Home_Page;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageButton;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import com.example.gomerry.R;
public class OneWayFragment extends Fragment {
Button economy;
public OneWayFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
// return inflater.inflate(R.layout.one_way_fragment, container, false);
Log.d("link_fly",Data_URL);
final View view = inflater.inflate(R.layout.one_way_fragment, container, false);
economy =(Button) view.findViewById(R.id.button11);
economy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
economy.setTextColor(R.color.cyan92a6);
ImageButton button = (ImageButton) this.findViewById(R.id.button_i_want_to_modify);
economy.setColorFilter(Color.argb(255, 255, 255, 255)); // White Tint
economy.setColorFilter(ContextCompat.getColor(getApplicationContext(), R.color.cyanBcD4), PorterDuff.Mode.MULTIPLY);
economy.setCompoundDrawableTintMode();
binding.myButton.compoundDrawables.first().setTint(Color.RED);
view.economy.compoundDrawables.first().setTint(Color.RED);
economy.compoundDrawables.first().setTint(Color.RED);
economy.getBackground().setColorFilter();
}
});
return view;
}
}//end of code
这是按钮 xml
这是我尝试过的代码的图像,我遇到了错误,但它不起作用,我没有一次尝试过我正在这个图像中一一尝试,我已经取消了所有注释以表明他们正在显示错误。
我希望这是对代码的清晰解释 :) 和我遇到的问题。请帮我解决这个错误。 提前致谢
【问题讨论】:
-
对不起,您的问题不清楚。请添加相关代码示例,例如您的样式文件、布局 XML、Java 类文件以进一步说明
-
@AtishAgrawal 我用代码和图像编辑了问题。我希望现在仍然可以理解,如果有任何澄清,请告诉我,我会尽力而为。谢谢。
标签: android button colors onclick drawable