android关于自定义radiobutton做成的横向单选滑动条,在线等答案

qq_16472815 2014-06-12 05:44:45
话不多说,直接贴上代码!问题是现在运行的时候显示的是空白,完全没有显示出我要加载的数据选项!麻烦各位帮我瞅瞅!

这个是自定义混合控件的代码:
package com.ylibrary.view;

import java.util.ArrayList;

import com.example.yuan_library.R;

import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.animation.AnimationSet;
import android.view.animation.TranslateAnimation;
import android.widget.HorizontalScrollView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;

public class HorizontalListview extends HorizontalScrollView
{
private Context context;
private ArrayList<String> titleList;
private RadioGroup radioGroup;
private ImageView imageView;
private Integer beginIdNum;
private ArrayList<RadioButton> radioButtonLists;
private ArrayList<Integer> radioButtonIdList;
private ArrayList<Integer> radioButtonWidthList;

public HorizontalListview(Context context)
{
super(context);
this.context=context;
initController();
accordingDataShow();
}

public HorizontalListview(Context context, AttributeSet attrs)
{
super(context, attrs);
this.context=context;
initController();
accordingDataShow();
}

public void initController()
{
LinearLayout ll=(LinearLayout) LayoutInflater.from(context).inflate(R.layout.horizontallistview,null);
radioGroup=(RadioGroup)ll.findViewById(R.id.hlistview_radiogroup);
imageView=(ImageView)ll.findViewById(R.id.hlistview_imageview);


radioButtonLists=new ArrayList<RadioButton>();
radioButtonIdList=new ArrayList<Integer>();
radioButtonWidthList= new ArrayList<Integer>();
}

private void accordingDataShow()
{
if(titleList == null || titleList.size() == 0)
{
return;
}
else
{
radioButtonIdList.clear();
radioButtonWidthList.clear();
beginIdNum= 666;
for(int index=0;index<titleList.size();index++)
{
RadioButton button=new RadioButton(context);
button.setId(beginIdNum++);
radioButtonIdList.add(button.getId());
LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.MATCH_PARENT);
params.setMargins(12, 0, 12, 0);
button.setLayoutParams(params);
button.setBottom(0);
button.setText(titleList.get(index));
button.setTextColor(getResources().getColor(R.color.normalblack));
button.setTextSize(14);
button.setBackgroundDrawable(null);

int a=button.getWidth();

radioButtonWidthList.add(button.getWidth()+24);
radioGroup.addView(button);
radioButtonLists.add(button);
}

radioGroup.check(radioButtonIdList.get(0));
RadioButton button=radioButtonLists.get(0);
button.setTextColor(0xff62f787);

imageView.setLayoutParams(new LinearLayout.LayoutParams(radioButtonWidthList.get(radioButtonIdList.get(0)-666),LinearLayout.LayoutParams.MATCH_PARENT));
imageView.setBottom(radioGroup.getCheckedRadioButtonId());
}

radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(RadioGroup rg, int currentButtonId)
{
AnimationSet animationSet =new AnimationSet(true);
TranslateAnimation translateAnimation = null;
int begindistance=0;
int enddistance=0;

int beforeButtonId=rg.getCheckedRadioButtonId();//获取之前选中button的id.
rg.check(currentButtonId);//设定当前选中button的id.


for(int beforenum=666;beforenum<beforeButtonId;beforenum++)
begindistance+=radioButtonWidthList.get(beforenum-666);

for(int distanceNum=beforeButtonId;distanceNum<currentButtonId;distanceNum++)
enddistance+=radioButtonWidthList.get(distanceNum-666);


if(currentButtonId>beforeButtonId)
translateAnimation=new TranslateAnimation(begindistance, enddistance, 0, 0);

if(beforeButtonId > currentButtonId)
translateAnimation=new TranslateAnimation(enddistance, begindistance , 0, 0);

animationSet.addAnimation(translateAnimation);
animationSet.setFillAfter(false);
animationSet.setFillAfter(true);
animationSet.setDuration(300);
imageView.startAnimation(animationSet);
}
});
}

public void setTitleList(ArrayList<String> list)
{
titleList=list;
accordingDataShow();
}
}
这个是混合控件的布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="44dp"
android:background="@color/light_gray"
android:orientation="vertical" >

<HorizontalScrollView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:fadingEdge="@null"
android:scrollbars="none" >

<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="@color/light_gray" >

<RadioGroup
android:id="@+id/hlistview_radiogroup"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:gravity="center_vertical"
android:orientation="horizontal" >


</RadioGroup>

<ImageView
android:id="@+id/hlistview_imageview"
android:layout_width="88dp"
android:layout_height="3dp"
android:layout_alignParentBottom="true"
android:background="@color/green" />
</RelativeLayout>
</HorizontalScrollView>

</LinearLayout>

这个是测试的activity:
package com.demo.activity;

import java.util.ArrayList;

import com.example.yuan_library.R;
import com.ylibrary.view.HorizontalListview;

import android.app.Activity;
import android.os.Bundle;

public class HorizontalListviewDemo extends Activity
{
private HorizontalListview listview;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.horizontallistviewactivity);
listview=(HorizontalListview)findViewById(R.id.listview);
ArrayList<String>list=new ArrayList<String>();
list.add("陈怀雨");
list.add("袁定超");
list.add("袁小龙");
list.add("张梅");
list.add("袁陈成");
list.add("于海涛");
list.add("松本五十六");
list.add("小孩");
listview.setTitleList(list);
onResume();
}
}
这个是测试activity的布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<com.ylibrary.view.HorizontalListview
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

</LinearLayout>
...全文
841 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
muyannatong512358 2016-05-05
  • 打赏
  • 举报
回复
楼主怎么解决的,求帮助 943554103@qq.com 能不能发我一份,谢谢
m1044248152 2015-08-25
  • 打赏
  • 举报
回复
请问楼主是如何解决的 方便的话 给个demo看下 1044248152@qq.com
IcyFox 2014-06-13
  • 打赏
  • 举报
回复
还有一种方式:

		RadioButton rb = (RadioButton)findViewById(R.id.radioButton1);
		rb.setButtonDrawable(getResources().getDrawable(android.R.color.transparent)) ;
可以试试
IcyFox 2014-06-13
  • 打赏
  • 举报
回复
这个个做不到吧,因为radioButton的按钮和文字本来就是一体的。。 有一种方案可以实现: 把radioButton的text属性设置为空,旁边放一个TextView来当作radioButton的Text,此时按钮和文字是两个控件,都可以独立控制了
qq_16472815 2014-06-13
  • 打赏
  • 举报
回复
楼上的问题解决了!现在改一个问题!请问如何动态隐藏radiobutton中的button按钮,只显示字体!是动态代码的更改方式哈!谢谢!答案正确的,果断一百分!!!望各位亲积极解答哟!
nj_dobetter 2014-06-13
  • 打赏
  • 举报
回复
这是Android的控件,怎么发到J2SE板块了? 友情帮顶

80,359

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧